[英]How can I overwrite data in csv file using jmeter
我正在使用Jmeter進行API自動化,正在CSV文件中寫入結果通過或失敗。
我無法覆蓋舊的結果數據,每次運行測試用例時,它都會附加舊的結果數據。
我使用Beanshell Post處理器寫入CSV文件。
import java.io.file;
import org.apache.jmeter.services.FileServer;
ActualResponseCode = prev.getResponseCode();
if (vars.get("ExpectedResponse").equals(vars.get("ActualResponse")))
{
if(vars.get("ExpectedResponseCode").equals(prev.getResponseCode()))
{
prev.setSuccessful(true);
Result = "Pass";
ErrorMessage = "No Error";
}
else
{
Result = "Fail";
ErrorMessage = "ResponseCode not matching";
}
}
else
{
prev.setSuccessful(false);
Result = "Fail";
ErrorMessage = "ResponseData is not matching";
}
f = new FileOutputStream("C://Users//a622821//Desktop//apache-jmeter-3.2//API_AUTOMATION//TestResult_Post.csv", true);
p = new PrintStream(f);
p.println(vars.get("TestCase") + "," + vars.get("API_Endpoint") + "," + vars.get("ExpectedResponseCode") + "," + ActualResponseCode + "," + Result + "," + ErrorMessage);
p.close();
f.close();
基本上,當您寫入文件時,可以通過使用boolean false
作為FileWriter構造函數的第二個參數來覆蓋文件
File file = ....
new FileWriter(file, false);
如果您有多個beanshell調用,建議創建Beanshell sampler,它將在測試開始時被調用並覆蓋文件(創建空文件):
import java.io.file;
f = new FileOutputStream("C://Users//a622821//Desktop//apache-jmeter-3.2//API_AUTOMATION//TestResult_Post.csv", false);
p = new PrintStream(f);
p.close();
f.close();
如果必須使用相同的beanshell,則需要一個變量標志,因此請添加具有值true的變量firstTime
在Beanshell中,使用它通過firstTime變量設置標志:
import java.io.file;
import org.apache.jmeter.services.FileServer;
ActualResponseCode = prev.getResponseCode();
if (vars.get("ExpectedResponse").equals(vars.get("ActualResponse")))
{
if(vars.get("ExpectedResponseCode").equals(prev.getResponseCode()))
{
prev.setSuccessful(true);
Result = "Pass";
ErrorMessage = "No Error";
}
else
{
Result = "Fail";
ErrorMessage = "ResponseCode not matching";
}
}
else
{
prev.setSuccessful(false);
Result = "Fail";
ErrorMessage = "ResponseData is not matching";
}
firstTime = vars.get("firstTime");
flag = true;
if ("true".equals(firstTime)) {
flag = false;
vars.put("firstTime", "false");
}
f = new FileOutputStream("C://Users//a622821//Desktop//apache-jmeter-3.2//API_AUTOMATION//TestResult_Post.csv", flag);
p = new PrintStream(f);
p.println(vars.get("TestCase") + "," + vars.get("API_Endpoint") + "," + vars.get("ExpectedResponseCode") + "," + ActualResponseCode + "," + Result + "," + ErrorMessage);
p.close();
f.close();
測試計划變量:
不要使用腳本將任何內容寫入文件,JMeter可以將任何內容直接存儲到其.jtl結果文件中,因此我建議將其配置為存儲所需內容,而不是嘗試在這種怪異的方法中創建額外的結果文件方式為:
因此,我建議切換到Response Assertion或JSR223 Assertion而不是PostProcessor。 如果需要,可以通過將下一行添加到user.properties文件(位於JMeter安裝的“ bin”文件夾中,告訴JMeter存儲斷言失敗消息),但是無論如何我認為它默認為true
)
jmeter.save.saveservice.assertion_results_failure_message=true
請查看Groovy-A Tutorial中的腳本JMeter斷言以獲取更多詳細信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.