当一个请求的返回数据是json格式的时候,jmeter提供了三种方式去处理:
- Json Assertion:直接对放回的结果做断言,判断数据是否和期望的值一致。
- JSON Extractor:后置处理器,可以获取返回结果中的数据,然后保存到变量中,作为后面请求的参数使用。
- 代码解析,如BeanShell:后置处理器,可以通过脚本处理,获取或判断返回结果中的数据。
下面来分别介绍下这三种方法的使用:
- Json Assertion
-
Assert Json Path exists:这里用来指定要获取json数据中那个key的值,如下:
情景一:{"code": 200, "status": "successfull"}
想要获取
code
的值–$.code
,其中$
就代表整个返回数据,然后取其中key=code的数据的值。情景二:获取json中数组元素中的数据
{"code": 200, "status": "successfull", "result": [{"msg": "access"}]}
想要获取上面
msg
中的数据该怎么办?取值方式–$.result[0].msg
-
Additionally assert value: 勾选后,会用前面取到的值直接和
Expected Value
中的数据进行全值比对。 -
Match as regular expression:勾选后,
Expected Value
中需要填写正则表达式,jmeter会根据你提供的正则表达式和获取到的数据进行比对。 -
Expect null:期望获取到的数据是null。
-
Invert assertion:注释写的很清楚–will fail if above conditions met,就是如果勾选,获取到的值如果和期望的匹配,那么返回
false
;不匹配,返回true
。
-
JSON Extractor
假设返回报文如下:{ "code": 0, "result": [ { "orderNo": "NO20901928392" } ] }
那么想要获取其中的orderNo,jsonPath的写法就是
$.result[0].orderNo
,然后在vars(jmeter启动时加载的全局变量Map)中添加orderNo
用来保存取到的值。 -
使用BeanShell来处理返回值
这种方式就更加强大,完全可以自己自定义脚本逻辑来处理,实际上可以适用所有结果返回的处理及校验。具体内容请看请看另外两篇博文:
链接一:Jmeter测试及应用–如何使用BeanShell断言判断请求返回的Json相应结果。
连接二:Jmeter测试及应用–BeanShell介绍和使用