我正在使用JMeter API动态创建JMeter jmx文件。我能够在TestPlan中添加一个TestPlan,在ThreadGroup中添加一个JavaSampler。但是,当我在Java中添加一个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/>如上文所示,只添加了测试名称、已启用的测试名称和注释。其余的变量完全被忽略。
是否有什么东西需要设置,以获得所有的值,如预期的?或者这是JMeter中的一个bug?我使用的是2.11版本
基本代码如下面链接http://blazemeter.com/blog/5-ways-launch-jmeter-test-without-using-jmeter-gui中的4.3节所示
为此,我添加了上面所示的代码。它的添加方式是,
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块的输出如下所示。
发布于 2014-09-02 14:14:50
在查看JMeter源代码之后,似乎所有属性都是使用setProperty函数而不是单个setter函数设置的。因此,放置下面的代码可以正确地创建CSVDataSet元素。
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,但这似乎是目前的方法。
发布于 2014-08-29 20:09:59
它显然不是JMeter中的一个bug,否则无法保存CSV数据集。
这可能是构建HashTree的方式中的一个问题,但是除非您显示完整的代码,否则就无法获得帮助。
顺便说一句,正如我在前面的回答中所说的,您要做的基于输入参数构建不同测试的方法不是一个好主意-- IMHO,对于即将到来的JMeter版本来说,这种方法将是非常脆弱的。
JMeter提供了您应该遵循的方法。
https://stackoverflow.com/questions/25568490
复制相似问题