如何使用beanshell脚本将数据写入jmeter中的csv

how to write data to csv in jmeter using beanshell scripting

我是 jmeter 的新手,在我的公司,我们正在使用 jmeter.My 进行 Web 服务测试,要求是我正在使用 csv 数据配置文件进行 Web 服务测试,在这里我想更新 csv 文件的每一行有了测试结果,我正在使用 beanshell 后处理器,请帮忙

例如: csv 包含:

Test Case,Dates,Numbers,Results
Total test cases are 16 and i want to update as below for each test case
TC_001,9-03-2016,001,PASS
TC_002,9-03-2016,0002,FAIL

等等……

Result = "FAIL";
Response = prev.Get....();
If(Response.Contains("Valid"));
Results="PASS";
f = new FileOutputStream("/tmp/oders.csv", true);
p = new PrintStream(f); 
this.interpreter.setOut(p); 
print(Results + "," + Result);
f.close();
P.Close();

这可能不是最好的主意,因为:

  • 您可能无法重新使用此文件
  • 您可能运行遇到2个或更多线程同时写入文件的情况,这将导致数据丢失、文件损坏或IO异常

我建议将您的 "Test Case"、"Dates" 和 "Numbers" 变量添加到 JMeter 的 .jtl 结果文件中,而不是使用 示例变量 属性 赞:

  1. 假设您有 3 个变量:TestCaseDateNumber
  2. 将以下行添加到 user.properties 文件(它位于 JMeter 安装的 /bin 文件夹下)

    sample_variables=TestCase,Date,Number
    
  3. 下次重新启动 JMeter 时,您将看到 "TestCase"、"Date" 和 "Number" 变量值附加到 .jtl 结果文件。

也可以将设置作为命令行参数传递,例如:

jmeter -Jsample_variables=TestCase,Date,Number -n -t /path/to/testplan.jmx -l /path/to/results.jtl 

参考文献:

我想分享我使用 BeanShell PostProcessor 将变量写入文件的经验。

我使用 "Regular Expression Extractor" 从服务器捕获了一些响应,并将其保存到几个变量 Var1 和 Var2 中,当我使用 "BeanShell PostProcessor" 将这些变量写入文件时,我发现它工作正常当我们运行单线程测试但多线程测试时,数据丢失了。

假设当我注入 100 个交易时,我只能在输出文件中看到 97 条记录。

所以最好的选择是在 user.properties 文件中设置 sample_variables,这样您就可以在 .jtl 结果文件中获取变量。

import java.io.File;
import org.apache.jmeter.services.FileServer;  //jmeter spelling corrected
import java.io.FileWriter;
import java.io.PrintWriter;
import java.util.Arrays;
import java.io.Writer;

File file = new File("csvFilePath");
FileWriter fstream = new FileWriter(file, true);
// true, will append the file if already exist

BufferedWriter out = new BufferedWriter(fstream);
out.write("Save your data which you want to save");
out.write("Save your data which you want to save");

out.close();
fstream.close();