jmeter - 如何在 bean shell 中验证 json 响应并执行一些操作以防响应在 jmeter 中不符合预期?
问题描述
我想在 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
解决方案
由于 JMeter 3.1 不建议使用 Beanshell 进行脚本编写,您应该改用 JSR223 测试元素和 Groovy 语言。主要原因是Groovy 的性能比 Beanshell 好得多。
Groovy has built-in JSON support therefore you can extract
isBlueLinkServicePinValid
attribute value in an easy way: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"); }
Demo:
推荐阅读
- javascript - force:recordData 在快速操作上不起作用
- java - 在spring MVC中验证实体类是否包含子类
- php - 如何使用正则表达式获取包含所有图像数字和图像字母的数组?
- reactjs - 如何使用离线功能实现 redux thunk 操作?
- jboss - CDI 注入何时发生?
- r - 根据 R 中的跳数提前终止的成对 Dijkstra
- c# - 如何在树视图的第三级绘制圆形复选框?
- javascript - AJAX 查询并不总是一致地更新信息
- python - 如何在pycharm方法中抑制警告“访问受保护的成员”?
- java - spring webflux的主要思想是什么?