0

我使用 Jmeter 作为负载测试工具。我通过请求传递了一个参数,作为响应,我只得到一个参数。回复。我想将请求和响应都保存在 csv 文件中。我正在使用正则表达式提取器来捕获响应,并使用 Bean Shell 后处理器将其保存在 csv 文件中。但无法捕获相应的请求参数。

示例:请求:http://localhost:8080/myService?input=abcd123455 和响应:pqrst1245/84985== 虽然在这里输入请求,但我从另一个 csv 文件中获取它。我想同时捕获输入参数和相应的响应,并将其存储在 csv 文件中,如输入、响应,即。abcd123455,pqrst1245/84985==

4

2 回答 2

0

尝试使用这个 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();
}
于 2017-02-20T11:16:54.017 回答
-1

最简单的方法是使用Sample Variables属性。假设您有 2 个变量${request},即${response}只需将下一行添加到user.properties文件:

sample_variables=request,response

并重新启动 JMeter 以获取该属性。完成测试后,您将在 .jtl 结果文件中看到 2 个附加列,其中包含${request}变量${response}值。

临时设置属性的另一种方法是通过-J 命令行参数传递它,例如

jmeter -Jsample_variables=request,response -n -t test.jmx -l result.jtl

有关使用 JMeter 属性的更多信息,请参阅Apache JMeter 属性自定义指南文章


我不建议使用脚本,因为当涉及到高负载时,您可能会遇到多个线程同时写入同一个文件的问题,您需要考虑实现某种形式的写锁

于 2017-02-20T11:21:13.290 回答