首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试使用JMeter API生成JMeter测试计划(jmx):无法保存CSVDataSet元素

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

Stack Overflow用户
提问于 2014-08-29 12:39:24
回答 2查看 615关注 0票数 0

我正在使用JMeter API动态创建JMeter jmx文件。我能够在TestPlan中添加一个TestPlan,在ThreadGroup中添加一个JavaSampler。但是,当我在Java中添加一个CSVDataSet元素时,它没有得到正确的保存。

下面的代码用于创建一个新的CSVDataSet元素

代码语言:javascript
复制
    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并不包含所设置的所有值。

代码语言:javascript
复制
    <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/>

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

是否有什么东西需要设置,以获得所有的值,如预期的?或者这是JMeter中的一个bug?我使用的是2.11版本

基本代码如下面链接http://blazemeter.com/blog/5-ways-launch-jmeter-test-without-using-jmeter-gui中的4.3节所示

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

代码语言:javascript
复制
    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块的输出如下所示。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-09-02 14:14:50

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

代码语言:javascript
复制
    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,但这似乎是目前的方法。

票数 2
EN

Stack Overflow用户

发布于 2014-08-29 20:09:59

它显然不是JMeter中的一个bug,否则无法保存CSV数据集。

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

顺便说一句,正如我在前面的回答中所说的,您要做的基于输入参数构建不同测试的方法不是一个好主意-- IMHO,对于即将到来的JMeter版本来说,这种方法将是非常脆弱的。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25568490

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档