当前位置: 首页 > 知识库问答 >
问题:

尝试使用JMeter API生成JMeter测试计划(jmx ):无法保存CSVDataSet元素

南宫书
2023-03-14

我正在使用JMeter API动态创建JMeter jmx文件。我能够在TestPlan中添加ThreadGroup,在ThreadGroup中添加JavaSampler。但是,当我在Java Sampler中添加CSVDataSet元素时,它无法正确保存。

以下代码用于创建新的CSVDataSet元素

    CSVDataSet csvDataSet = new CSVDataSet();
    csvDataSet.setName("CSV Data Set");
    csvDataSet.setComment("Sample CSV Data Set");
    csvDataSet.setDelimiter(",");
    csvDataSet.setFileEncoding("");
    csvDataSet.setFilename("d:\\jmeter\\data.csv"); // variable
    csvDataSet.setQuotedData(true);
    csvDataSet.setRecycle(true);
    csvDataSet.setShareMode(shareMode.all);
    csvDataSet.setStopThread(false);
    csvDataSet.setVariableNames("firstname, lastname, email"); // variable
    csvDataSet.setEnabled(true);

使用SaveService保存时。saveTree,最终的jmx不包含所有设置的值。

    <org.apache.jorphan.collections.HashTree>
      <CSVDataSet testname="CSV Data Set Config" enabled="true">
        <stringProp name="TestPlan.comments">Sample CSV Data Set Config</stringProp>
      </CSVDataSet>
    <org.apache.jorphan.collections.HashTree/>

如上所示,只添加了测试名称、enabled和注释。其余变量被完全忽略。

为了得到预期的所有值,需要设置什么吗?还是这是JMeter的bug?我使用的是2.11版本

基本代码是根据4.3节从以下链接http://blazemeter.com/blog/5-ways-launch-jmeter-test-without-using-jmeter-gui

为此,我添加了上面显示的代码。它的添加方式是,

    testPlanTree.add("testPlan", testPlan);
    testPlanTree.add("loopController", loopController);
    testPlanTree.add("threadGroup", threadGroup);
    testPlanTree.add("httpSampler", httpSampler);
    testPlanTree.add("csvDataSet", csvDataSet);

    SaveService
            .saveTree(testPlanTree, new FileOutputStream("d:\\test.jmx"));

CSVDataSet块的输出如上所示。

共有2个答案

那利
2023-03-14

这显然不是JMeter中的错误,否则无法保存CSV数据集。

这可能是您构建HashTree的方式中的一个问题,但除非您显示完整代码,否则您无法获得帮助。

顺便说一句,正如我在之前的回答中所说,您试图根据输入参数构建不同的测试并不是个好主意,恕我直言,对于即将推出的JMeter版本,这种方法将非常脆弱。

JMeter提供了您应该遵循的方法。

束研
2023-03-14

在查看JMeter源代码后,似乎所有属性都是使用setProperty函数而不是单个设置器函数设置的。因此,放置以下代码可以正确创建 CSV 数据集元素。

    csvDataSet.setProperty("delimiter", ",");
    csvDataSet.setProperty("fileEncoding", "");
    csvDataSet.setProperty("filename", "d:\\data.csv");
    csvDataSet.setProperty("quotedData", true);
    csvDataSet.setProperty("recycle", true);
    csvDataSet.setProperty("shareMode", "shareMode.all");
    csvDataSet.setProperty("stopThread", false);
    csvDataSet.setProperty("variableNames", "var1, var2, var3");

不知道为什么代码中没有使用setter,但这似乎是现在要走的路

 类似资料:
  • 我试图使用jmeter java API创建一个jmeter jmx文件。这就是我所做的, gui.jmx 使用jmeter gui应用程序创建一个引用jmx文件,我可以对其进行比较。在测试计划中,我只添加了一个线程组和线程组中的java采样器。所有值都是默认值。 null 2)测试元素节点在gui.jmx中包含属性“gui class”和“Test class”。例如,这些属性不是在code.j

  • JMeter包含各种相互关联但为不同目的而设计的元素。在开始使用JMeter之前,最好先了解一下JMeter的一些主要元素,并详细说明。 注意:测试计划包含至少一个线程组。 以下是JMeter的一些主要组件: 测试计划(Test Plan) 线程组(Thread Group) 控制器(Controllers) 监听器(Listeners) 计时器(Timers) 配置元素(Configuratio

  • 我想以编程方式从一组动态的URL和表单数据生成基本的Jmetm测试计划(不使用Jmetm GUI手动)。我可以使用Jmetm API来做到这一点吗? 它已经在某个地方解释过了吗? 我只需要点开始。 当然,我可以对测试计划XML格式进行逆向工程,然后编写我自己的自定义测试计划生成器,但这很容易出错,每当格式发生变化时,我的生成器都需要更新。

  • 主要内容:测试计划注意事项 -可以将测试计划可视化为用于运行测试的JMeter脚本。 测试计划由测试元素组成,例如线程组,逻辑控制器,样本生成控制器,监听器,定时器,断言和配置元素。 测试计划包含执行脚本的所有步骤。 测试计划中包含的所有内容都按照从上到下的顺序执行,或者按照测试计划中定义的顺序执行。 下图给出了测试计划的目录级别。 测试计划注意事项 - 在运行整个测试计划之前,应保存测试计划。 JMeter文件或测试计划以扩

  • 在本节中,我们将学习如何编写一个简单的测试计划来测试Java Messaging Service(JMS)。 出于测试目的,我们使用Apache ActiveMQ。有各种JMS服务器,如:glassfish3,IBM WebSphere MQ(以前称为MQSeries),Tibco等。 在继续本节之前,请按照以下简单步骤在系统上安装Apache ActiveMQ。 从以下链接下载最新版本的Apac

  • 主要内容:创建JMeter测试计划,添加采样器,添加监听器,保存并执行测试计划,验证输出在本节中,我们将学习如何创建测试FTP站点的基本测试计划。 为了演示测试目的,我们将使用公共可用的FTP位置,可以使用它来测试文件的下载。 您可以使用市场上现有的任何可用的演示FTP位置。我们使用URL下的FTP位置: https://dlptest.com/ftp-test/ 下图显示了上述URL时打开的网页。 单击FTP测试部分下的URL: ftp://ftp.dlptest.com/ 。 它