我想在jmeter中提取json响应,如果响应不符合预期,则需要将其打印到csv文件中。
我尝试使用contains方法检查响应是否包含预期的关键字,但似乎不起作用。还有其他方法可以做到吗?
此处的示例代码:
log.info(ctx.getPreviousResult().getResponseDataAsString());
r = ctx.getPreviousResult().getResponseCode();
d = ctx.getPreviousResult().getResponseDataAsString();
if(!d.contains("valid")){
p.println(r +","+ vars.get("email") +",");
}
这是我的json响应
{
"isBlueLinkServicePinValid": "valid"
}
我正在检查关键字“有效”
if(!d.contains("valid"))
但这似乎不起作用吗?
TIA
答案 0 :(得分:1)
Since JMeter 3.1 it is not recommended to use Beanshell for scripting,您应该改为使用JSR223测试元素和Groovy语言。主要原因是Groovy has much better performance than Beanshell这样做了。
Groovy has built-in JSON support,因此您可以轻松提取isBlueLinkServicePinValid
属性值:
String response = prev.getResponseDataAsString();
log.info("Response: " + response)
String valid = new groovy.json.JsonSlurper().parseText(response).isBlueLinkServicePinValid
log.info("Valid: " + valid);
if (valid.equals("valid")) {
log.info("Do something");
}
else {
log.info("Do something else");
}
演示: