我正在以 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
答案 0 :(得分:0)
添加Regular Expression Extractor作为请求的子项,返回上面的JavaScript并按如下方式对其进行配置:
s0.responseTextJson
s0.responseTextJson="(.+?)";
$1$
将下一行添加到 user.properties 文件(位于JMeter安装的“bin”文件夹中)
sample_variables=s0.responseTextJson
请参阅Sample Variables用户手册条目,了解此处发生了什么。
Run your JMeter test in command-line non-GUI mode喜欢
jmeter -n -t test.jmx -l result.jtl
测试完成后,您将在.jtl结果文件中看到名为s0.responseTextJson
的新列,它将保存每个HTTP请求采样器的相关值
答案 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