如何使用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 结果文件中,而不是使用 示例变量 属性 赞:
- 假设您有 3 个变量:
TestCase
、Date
和 Number
将以下行添加到 user.properties 文件(它位于 JMeter 安装的 /bin 文件夹下)
sample_variables=TestCase,Date,Number
- 下次重新启动 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();
我是 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 结果文件中,而不是使用 示例变量 属性 赞:
- 假设您有 3 个变量:
TestCase
、Date
和Number
将以下行添加到 user.properties 文件(它位于 JMeter 安装的 /bin 文件夹下)
sample_variables=TestCase,Date,Number
- 下次重新启动 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();