У нас есть сценарий JMeter, имеющий много тестовых элементов, таких как фрагменты теста, включая контроллеры, сэмплеры beanhell, сэмплеры ssh, JDBC и т. Д. Когда мы попытались запустить JMX-скрипт с использованием кода Java (ниже), часть контроллера скрипта пропускается. Мы запускаем тестовые фрагменты, используя контроллеры include, упоминая как абсолютный, так и относительный путь. Пожалуйста, предложите нам, как сделать тестовые фрагменты внутри файла JMX, используя нижеприведенный Java-код.
У нас есть один скрипт JMeter, скажем, xyz.jmx, который вызывается из сценария ABC.jmx jemeter с использованием include controller.
public class Test_INV_TI_001_XML extends BaseClass {
StandardJMeterEngine jmeter = new StandardJMeterEngine();
Summariser summer = null;
JMeterResultCollector results;
@Test()
public void INV_TI_001_XML() throws Exception {
File JmxFile1 = new File("/Path/To/JMX/File/ABC.jmx");
HashTree testPlanTree = SaveService.loadTree(JmxFile1);
JMeterTreeModel treeModel = new JMeterTreeModel();
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(clonedTree);
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());
}
}
}
При выполнении сценария ABC.jmx с использованием приведенного выше кода также должен вызываться xyz.jmx, вызываемый в сценарии ABC.jmx, и успешно выполняться.