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

时间:2016-03-09 05:17:59

标签: performance web-services csv jmeter beanshell

我是jmeter的新手,在我的公司,我们正在使用jmeter进行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();

3 个答案:

答案 0 :(得分:2)

这可能不是最好的主意:

  • 您可能在重新使用此文件时遇到问题
  • 当两个或多个线程同时写入文件时,可能会遇到导致数据丢失,文件损坏或IO异常的情况

我建议您添加"测试用例","日期"和"数字"变量到JMeter的.jtl结果文件而不是使用示例变量属性,如:

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

    sample_variables=TestCase,Date,Number
    
  3. 在下一次JMeter重启时,您将看到" TestCase"," Date"和"数字"附加到.jtl结果文件的变量值。
  4. 也可以将设置作为命令行参数传递,如:

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

    参考文献:

答案 1 :(得分:1)

Add Bean shell post processor

import java.io.File;
import org.apache.jmerer.services.FileServer;
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();

答案 2 :(得分:0)

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

我使用"正则表达式提取器"从服务器捕获了一些响应。并将其保存到少量变量Var1& Var2,当我使用" BeanShell PostProcessor"将这些变量写入文件时,我发现当我们使用单线程运行测试但多线程测试时数据丢失时,它工作正常。

说当我注入100个事务时,我在输出文件中只能看到97条记录。

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