【问题标题】: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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-06-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-15
        • 2013-05-16
        相关资源
        最近更新 更多