Jmeter测试及应用--Jmeter处理Json类型返回数据的多种方法

当一个请求的返回数据是json格式的时候,jmeter提供了三种方式去处理:

  1. Json Assertion:直接对放回的结果做断言,判断数据是否和期望的值一致。
  2. JSON Extractor:后置处理器,可以获取返回结果中的数据,然后保存到变量中,作为后面请求的参数使用。
  3. 代码解析,如BeanShell:后置处理器,可以通过脚本处理,获取或判断返回结果中的数据。

下面来分别介绍下这三种方法的使用:

  1. Json Assertion
    Jmeter测试及应用--Jmeter处理Json类型返回数据的多种方法_第1张图片
  • 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

  1. JSON Extractor
    Jmeter测试及应用--Jmeter处理Json类型返回数据的多种方法_第2张图片
    假设返回报文如下:

    {
        "code": 0,
        "result": [
            {
                "orderNo": "NO20901928392"
            }
        ]
    }
    

    那么想要获取其中的orderNo,jsonPath的写法就是$.result[0].orderNo,然后在vars(jmeter启动时加载的全局变量Map)中添加orderNo用来保存取到的值。

  2. 使用BeanShell来处理返回值
    这种方式就更加强大,完全可以自己自定义脚本逻辑来处理,实际上可以适用所有结果返回的处理及校验。具体内容请看请看另外两篇博文:
    链接一:Jmeter测试及应用–如何使用BeanShell断言判断请求返回的Json相应结果。
    连接二:Jmeter测试及应用–BeanShell介绍和使用

你可能感兴趣的:(Jmeter测试及应用)