【问题标题】:Problem in running Test Fragment using JMeter JMX script using Java code使用 Java 代码使用 JMeter JMX 脚本运行测试片段时出现问题
【发布时间】:2019-10-11 05:37:53
【问题描述】:

我的 JMeter 脚本包含许多测试元素,例如测试片段,包括控制器、beanshell 采样器、ssh 采样器、SFTP 采样器、JDBC 等。当我尝试使用 Java 代码(如下)运行 JMX 脚本时,一些测试元素被跳过.一个主要问题是它跳过测试片段而不进入另一个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 文件中运行测试片段,但它没有考虑和跳过。

【问题讨论】:

    标签: java testing jmeter


    【解决方案1】:

    您的测试代码缺少必要的一点:解析需要遍历并添加到“主”HashTreeModuleInclude 控制器

    所以你需要替换这一行:

     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);
    

    更多信息:Five Ways To Launch a JMeter Test without Using the JMeter GUI

    【讨论】:

      猜你喜欢
      • 2010-10-11
      • 1970-01-01
      • 1970-01-01
      • 2021-10-15
      • 1970-01-01
      • 1970-01-01
      • 2018-07-22
      • 2015-09-12
      • 1970-01-01
      相关资源
      最近更新 更多