jmeter断言之JSON Assertion

jmeter断言之JSON Assertion

1:什么条件下使用json断言是合适的?

若服务器返回的Response Body为JSON格式的数据,使用JSON断言来判断测试结果是较好的选择。

2:json数据结构

JSON用于描述文本数据结构,有如下形式:
1.对象(object)
  对象是一组无序的名称/值对。对象以{(左大括号)开始,以}(右大括号)结束。每个名称后面跟着:冒号,名称/值对之间用逗号分隔。比如:
  {"name":"zhangsan","sex":1,"age":25}
2.数组(Array)
  数组是值的有序集合。数组以[(左中括号)开始,以](右中括号)结束。值之间用逗号分隔。
  比如:
{
"cert_sign":"",
"current_beans":
[
{
"branch_code":"1909291058080031",
"buyer_pay_amount":"null",
"amont":1
},
{
"branch_code":"1909291058080031",
"buyer_pay_amount":"null","amont":10
}
 ],
 "error_code":"0TE110001000",
 "error_info":"交易成功",
 
}
如何获取json数据?
获取error_code,$.error_code
获取current_beans中第一条数据branch_code值,$.error_code.current_beans[0].branch_code
获取current_beans中所有条数据branch_code值,$.error_code.current_beans[*].branch_code
获取current_beans前两条数据,$.error_code.current_beans[0,1]
获取current_beans数据其中amont大于1,$.error_code.current_beans[?(@.amont>1)]
获取current_beans最后一条数据,$.error_code.current_beans[-1:]

3:jmeter JSON Assertion配置
Assert JSON Path exists
用于断言的JSON元素的路径JSONPath)。
1.Additionally assert value
  是否额外验证根据JSONPath提取的值
  不勾选,验证JSONPath能否在JSON文档中找到路径
  勾选,验证根据JSONPath提取值是否预期
2.Match as regular expression
  预期值是否可以使用正则表达式。
  不勾选,预期值不能使用正则表达式表示;
  勾选,预期值可以使用正则表达式表示。
预期值
1.Expect null
  若验证提取的值为null,则勾选此项。
  这里有两个地方需要额外注意:
  a.验证null值,还是需要勾选“Additionally assert value”,否则验证的是JSONPath能否找到路径
  b.预期值不填表示空字符,与null不等价
2.Invert assertion(will fail if above conditions met)
  若勾选,表示对断言结果取反。

注意:
除了null外,还有一种特殊的值,就是空数组,预期值不能不填,需要设置为:[]
其中[]表示空数组。
如图:

 4:样例演示

4.1:预期返回的值为null;校验响应返回json数据是否有pay_status,没有则断言通过

 2:预期返回的某个字段a的值应该为A;校验响应返回json数据a的值为A,则断言通过,否则断言失败

 

绿色表示断言通过

 

参考:https://zhuanlan.zhihu.com/p/72918260?from=singlemessage
原文地址:https://www.cnblogs.com/qiaoli0726/p/13854385.html