簡體   English   中英

如何使用jmeter覆蓋csv文件中的數據

[英]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 AssertionJSR223 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM