【问题标题】:How to capture request and response values in Jmeter and store it in file?如何在 Jmeter 中捕获请求和响应值并将其存储在文件中?
【发布时间】:2017-02-20 10:32:32
【问题描述】:
我使用 Jmeter 作为负载测试工具。
我通过请求传递了一个参数,作为响应,我只得到一个参数。回复。我想将请求和响应都保存在 csv 文件中。
我正在使用正则表达式提取器来捕获响应,并使用 Bean Shell 后处理器将其保存在 csv 文件中。但无法捕获相应的请求参数。
示例:请求:http://localhost:8080/myService?input=abcd123455
和响应:pqrst1245/84985==
虽然在这里输入请求,但我从另一个 csv 文件中获取它。
我想同时捕获输入参数和相应的响应,并将其存储在 csv 文件中,例如输入、响应,即。 abcd123455,pqrst1245/84985==
【问题讨论】:
标签:
regex
jmeter
beanshell
post-processor
【解决方案1】:
尝试使用这个 Beanshell...我没有尝试过,但它应该可以工作。
import org.apache.jmeter.services.FileServer;
if (sampleEvent.getResult() instanceof org.apache.jmeter.protocol.http.sampler.HTTPSampleResult) {
String request = (sampleEvent.getResult().getSamplerData());
String response = prev.getResponseDataAsString();
fos = new FileOutputStream("/home/user/output.csv", true);
ps = new PrintStream(fos);
StringBuilder sb = new StringBuilder();
sb.append(request).append(",").append(response).append("\n");
ps.println(sb.toString());
ps.close();
fos.close();
}
【解决方案2】:
最简单的方法是使用Sample Variables 属性。假设您有 2 个变量,即 ${request} 和 ${response},只需将下一行添加到 user.properties 文件:
sample_variables=request,response
并重新启动 JMeter 以获取该属性。完成测试后,您将在 .jtl 结果文件中看到另外 2 个列,其中包含 ${request} 和 ${response} 变量值。
另一种临时设置属性的方法是通过-J command-line argument 像传递它
jmeter -Jsample_variables=request,response -n -t test.jmx -l result.jtl
有关使用 JMeter 属性的更多信息,请参阅 Apache JMeter Properties Customization Guide 文章
我不建议使用脚本,因为当涉及到高负载时,您可能会遇到多个线程同时写入同一个文件的问题,您需要考虑实现某种形式的 write lock