2017-09-07 52 views
0

我在javascript格式中获得了休息呼叫响应。我可以将整个响应保存在本地文件中,但我必须保存一部分是javascript变量值的响应。如何编辑jmeter中'保存对文件的响应'中的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

回答

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相关值

+0

感谢您的答复德米特里。 我可以通过使用BeanShell PostProcessor来解决它。 –

0

我可以通过添加一个BeanShellPostPro来解决上述问题用下面的脚本进行处理。

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