在调试脚本的时候,人工可以很快知道该接口有没有回放真正的成功了,但是在每天定时跑所有的线上接口的时候,没有加上断言,就算出现了失败的情况,比如服务器响应出错(网络超时,服务挂了),甚至是开发人员偷偷摸摸发了版本,接口有bug,这个时候要让Jmeter来帮助我们验证测试结果的正确性,就需要通过Jmeter的断言组件来实现此功能了。
断言组件是通过获取服务器响应数据,根据断言规则去匹配这些响应数据,比如先填入一个预期值,再和接口返回的实际值做对比,如果匹配到了,接口就是正常的,如果匹配不到,接口就出现了异常,此时Jmeter会判断这个事务失败了,下面会从介绍如下几种断言方式。
响应断言
参数说明:
名称:可以随意设置,能够代表业务意义
注释:可以随意设置,可以为空
Apply to:
Main sample and sub-samples:匹配范围为当前父取样器,及子取样器
Main sample only :仅当前父取样器
Sub samples only:仅子取样器
JMeter Variable:变量值进行匹配
测试字段:需要验证的响应部分。
响应文本:从服务器返回的响应文本。不包括 HTTP Header
响应代码:http协议返回的响应码。比如 200.
响应消息:Response Message:匹配响应信息。比如处理成功返回”成功“字样
模式匹配规则:
包括:上面选中的部分包含下面的正则表达式就算Pass
匹配:上面选中的整个部分匹配下面的正则表达式就算Pass
相等:上面选中的整个部分和下面的字符串相等就算Pass,不支持正则表达式,同时对大小写敏感
字符串:上面选中的部分包含下面的字符串就算Pass,不支持正则表达式,同时对大小写敏感
否:勾选上之后,会对前面选择的进行取反。比如"msg":"成功调用" 就是不匹配就算Pass
运行脚本,查看结果:
没有报错,就是成功的
失败的示例:比如要断言的内容在响应结果中没有,会出现红色的提示信息,并且提示找不到该断言内容
Bean shell断言
根据http协议返回的状态码和响应返回的code,一起结合判断接口是否成功
JSON断言
Assert JSON path exists(断言JSON路径存在)
JSON路径可以在查看结果树的接口返回响应数据里面提取
如下图:
1、选择JSON Path Tester
2、输入".msg"
3、点击Test,出现”成功调用“,就可以了
Additionally assert value(断言值)
不勾选:表示不判断json路径获取的值,并且“Expected Value”不能编辑。只要json路径存在即断言成功,反之断言失败
勾选:表示需要判断json路径获取的值,“Expected Value”可编辑。json路径获取的值匹配即断言成功,反之断言失败
Match as regular expression(匹配为正则表达式)
Expected Value(期望值)
此处填入期望值。如果json路径获取出来的结果包含期望值则成功,反之断言失败
Expect null(期望空值)
不勾选:以已填入的条件进行判断
勾选:json路径获取的结果是空值则成功,反之断言失败
Invert assertion (will fail if above conditions met)(反向断言,如果满足上述条件将失败)
反向断言,将上面的判断否决
不勾选:即json路径获取的结果是空值则断言成功,反之失败
勾选:即json路径获取的结果是空值则断言失败,反之成功