2014-08-29 56 views
0

我正在使用JMeter API動態創建JMeter jmx文件。我能夠在ThreadGroup內的TestPlan和JavaSampler中添加一個ThreadGroup。但是當我在Java採樣器中添加一個CSVDataSet元素時,它不能正確保存。嘗試使用JMeter API生成JMeter測試計劃(jmx):無法保存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中的錯誤?我使用版本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

查看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"); 

不知道爲什麼制定者沒有在代碼中使用,但是這似乎是要走的路現在

0

這顯然不是JMeter中的一個bug,否則CSV數據集無法保存。

這可能是您構建HashTree的一個問題,但除非您顯示完整的代碼,否則無法獲得幫助。順便說一句,正如我在之前的回答中所說的那樣,根據輸入參數構建不同測試的方法並不是一個好主意,恕我直言,這種方法對即將到來的JMeter版本將非常脆弱。

JMeter提供了你應該遵循的方法。

+0

添加代碼的要求。 – Avi 2014-09-01 18:32:19