Проблема при запуске фрагмента теста с использованием JMeter-скрипта JMeter с использованием кода Java - PullRequest
0 голосов
/ 11 октября 2019

У меня есть сценарий JMeter, содержащий множество тестовых элементов, таких как тестовые фрагменты, включая контроллеры, сэмплеры beanhell, сэмплеры ssh, сэмплеры SFTP, JDBC и т. Д. Когда я пытался запустить JMX-скрипт с использованием кода Java (ниже), некоторые из тестовых элементов пропускаютсяОдной из основных проблем является пропуск тестовых фрагментов без использования внутри другого скрипта JMX. Мы запускаем тестовые фрагменты с использованием контроллеров include, которые мы испробовали все комбинации путей. Помогите, пожалуйста, запустить тестовые фрагменты внутри файла JMX, используя приведенный ниже Java-код. .

Я перепробовал все пути внутри JMX-скриптов, я добавил все JMeter Jars в репозиторий Maven и т. Д.

public class Test_SM_RS_001_XML extends BaseClass {
public void Test121() throws Exception {
        StandardJMeterEngine jmeter = new StandardJMeterEngine();
    Summariser summer = null;
    JMeterResultCollector results;

        File JmxFile1 = new File(/path/to/JMX/File/test121.jmx");
        HashTree testPlanTree = SaveService.loadTree(JmxFile1);
        testPlanTree.getTree(JmxFile1);
        jmeter.configure(testPlanTree);
        String summariserName = JMeterUtils.getPropDefault("summariser.name", "TestSummary");
        if (summariserName.length() > 0) {
            summer = new Summariser(summariserName);
        }
        results = new JMeterResultCollector(summer);
        testPlanTree.add(testPlanTree.getArray()[0], results);
        jmeter.runTest();   
        while (jmeter.isActive())
        {
            System.out.println("StandardJMeterEngine is Active...");
            Thread.sleep(3000);
        }       
        if (results.isFailure())
        {
            TestAutomationLogger.error("TEST FAILED");
            Assert.fail("Response Code: " + JMeterResultCollector.getResponseCode() + "\n" + "Response Message: " + JMeterResultCollector.getResponseMessage() + "\n" + "Response Data: " + JMeterResultCollector.getResponseData());
        }
}
}

Я ожидаю запустить тестовые фрагменты внутри файла JMX, но это не учитываети Пропуск.

1 Ответ

0 голосов
/ 14 октября 2019

В вашем тестовом коде отсутствует необходимый бит: разрешение Модуль и Включает контроллеры, которые необходимо просмотреть и добавить в «основной» HashTree

Таким образом, вам нужно заменить эту строку:

 testPlanTree.getTree(JmxFile1);

на эти:

JMeterTreeModel treeModel = new JMeterTreeModel(new Object());
JMeterTreeNode root = (JMeterTreeNode) treeModel.getRoot();
treeModel.addSubTree(testPlanTree, root);

SearchByClass<ReplaceableController> replaceableControllers =
        new SearchByClass<>(ReplaceableController.class);
testPlanTree.traverse(replaceableControllers);
Collection<ReplaceableController> replaceableControllersRes = replaceableControllers.getSearchResults();
for (ReplaceableController replaceableController : replaceableControllersRes) {
    replaceableController.resolveReplacementSubTree(root);
}
HashTree clonedTree = JMeter.convertSubTree(testPlanTree, true);

и эту:

jmeter.configure(testPlanTree);

на эту:

jmeter.configure(clonedTree);

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

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