簡體   English   中英

使用 JMeter JMX 腳本使用 Java 代碼運行測試片段時出現問題

[英]Problem in running Test Fragment using JMeter JMX script using Java code

I have JMeter script having many test elements like test fragments, include controllers, beanshell samplers, ssh samplers, SFTP samplers, JDBC etc. When I tried running JMX script using Java code( below) some of the test elements are getting skipped.One of主要問題是它跳過了測試片段而沒有進入另一個 JMX 腳本。我們正在使用包含控制器運行測試片段,我們嘗試了所有路徑組合。請幫助使用下面的 Java 代碼在 JMX 文件中運行測試片段。

我嘗試了 JMX 腳本中的所有路徑,我在 maven 存儲庫等中添加了所有 JMeter Jars 等。

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 文件中運行測試片段,但它沒有考慮和跳過。

您的測試代碼缺少必要的一點:解析需要遍歷並添加到“主” 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 GUI 的情況下啟動 JMeter 測試的五種方法

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM