Установить свойство P-функции для jmeter API в Java - PullRequest
0 голосов
/ 21 февраля 2019

У меня есть тест jmeter, который уже определен в графическом интерфейсе, например this .

Я автоматизирую этот тест jmeter из java, и я хочу установить ${__P(threads)} изнутрикод Java.

Соответствующий код:

public List<String> runJmxTest(String jmxFile, String jtlFile) throws IOException {
    HashTree testPlanTree;
    List<String> resultSet = new ArrayList<>();
    // Initialize JMeter SaveService
    SaveService.loadProperties();
    JMeterVariables j = new JMeterVariables();
    j.put("threads", "10");
    // Load existing .jmx Test Plan
    File in = new File(jmeterHome.getPath() + "/bin/testPlans/" + jmxFile);
    try{
        testPlanTree = SaveService.loadTree(in);
    } catch (FileNotFoundException e){
        resultSet.add("fail");
        resultSet.add(e.toString());
        return resultSet;
    }
    // set up custom result collector with summariser
    Summariser summer = new Summariser("caos-mbm summariser");
    collector = new myResultCollector(summer);
    if(jtlFile != null){
        if(!jtlFile.contains(".jtl")) {
            String jtlTmp = jtlFile.concat(".jtl");
            collector.setFilename(jmeterHome.getPath() + "/bin/testPlans/Output/" + jtlTmp);
        } else {
            collector.setFilename(jmeterHome.getPath() + "/bin/testPlans/Output/" + jtlFile);
        }
    }
    testPlanTree.add(testPlanTree.getArray()[0], collector);
    // Run Test Plan
    jm.configure(testPlanTree);
    jm.run();
    resultSet.add("success");
    resultSet.add(Double.toString(collector.getErrorPercent()));
    return resultSet;
}

Я попытался установить свойство через реквизиты, добавить его в дерево плана тестирования, добавив свойства jmeter к объекту jmetercontext.Я не могу заставить его забрать переменную.

Любой совет будет оценен.Я также просмотрел довольно много постов, которые кажутся похожими, но решения не сработали для меня, или реализация была отключена.

1 Ответ

0 голосов
/ 21 февраля 2019

Вы используете неправильный класс, удалите эти строки:

JMeterVariables j = new JMeterVariables();
j.put("threads", "10");

и добавьте следующее:

org.apache.jmeter.util.JMeterUtils.setProperty("threads", "10");

Вам нужно сделать это после загрузка плана тестирования и до запуска теста.

Также обязательно добавьте ApacheJMeter_functions.jar в ваш проект CLASSPATH

Дополнительная информация о запуске теста JMeter с использованием JMeter API : Пять способов запустить тест JMeter без использования графического интерфейса JMeter

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...