如何在“保存对文件的响应”中编辑javascript响应'在jmeter?

时间:2017-09-07 09:10:33

标签: jmeter load-testing jmeter-plugins

我正在以 javascript 格式获得休息呼叫响应。我可以将整个响应保存在本地文件中。但是我必须保存一部分响应,这是一个javascript变量的值。

请查找我的javascript回复数据:

在下面的代码中,我想保存 s0.responseTextJson 的值,需要在保存到文件之前解析json字符串。

var s0=new Response();s0.api=null;s0.ckStatus=200;s0.ckStatusText="OK";
s0.responseText="{\"com.response-message\":{}}";
s0.responseTextJson="{\"com.response-message\":{}}";
s0.responseTextXml="<ns4:response-message></ns4:response-message>";
s0.responseType='JSON';
dwr.engine._remoteHandleCallback('0','0',s0);

Please click here to see the screenshot of actual response in jmeter

2 个答案:

答案 0 :(得分:0)

  1. 添加Regular Expression Extractor作为请求的子项,返回上面的JavaScript并按如下方式对其进行配置:

    • 参考名称:任何有意义的内容,即s0.responseTextJson
    • 正则表达式:s0.responseTextJson="(.+?)";
    • 模板:$1$
  2. 将下一行添加到 user.properties 文件(位于JMeter安装的“bin”文件夹中)

    sample_variables=s0.responseTextJson
    

    请参阅Sample Variables用户手册条目,了解此处发生了什么。

  3. 重新启动JMeter以选择属性。
  4. Run your JMeter test in command-line non-GUI mode喜欢

    jmeter -n -t test.jmx -l result.jtl
    
  5. 测试完成后,您将在.jtl结果文件中看到名为s0.responseTextJson的新列,它将保存每个HTTP请求采样器的相关值

    JMeter Response Variable

答案 1 :(得分:0)

我可以通过添加一个带有以下脚本的BeanShellPostProcessor来解决上述问题。

String originalResponse = new String(data);
String filteredResponse = 
originalResponse.substring(originalResponse.indexOf("s0.responseTextJson=\"")+21, originalResponse.indexOf("\";s0.responseTextXml=\"")).replace("\\\\","#temp#").replace("\\","").replace("#temp#","\\");
prev.setResponseData(filteredResponse.getBytes());

Please click here to see my BeanShellPostProcessor in Jmeter