断言:让程序判断预期结果和实际结果是否一致
提示:JMeter断言是在请求的返回层面增加一层判断机制:因为请求成功了,并不代表结果一定正确,因此需要检测机制提高测试准确性
Jmeter最常用断言:Response Assertion(响应断言),Json断言,beanshell断言
一、Response Assertion(响应断言)
响应断言可以选择断言验证的范围(URL,响应头,响应码,响应体,响应附件),匹配的模式(纯文本还是正则表达式匹配)
操作响应断言:添加->断言->响应断言
响应断言具体如下:
Apply to (响应断言的应用范围)
Main sample and sub-samples:作用于父节点取样器及对应子节点取样器
Main sample only:只作用于父节点取样器(一般的断言都选这个)
Sub-samples only:只作用于子节点取样器
JMeter Variable:只作用于jmeter变量(可写入正则提取的响应值)
要测试的响应字段(可通过取样器结果查看)
-
响应文本:请求的响应文本信息,不包含响应头信息。最常用的断言字段
-
Document(text):通过Apache Tika从各种的文档中提取的文本进行验证,包括响应文本,pdf、word等等各种格式
-
Response Headers:响应头信息
-
URL样本:请求url,如果有重定向包含重定向url
-
响应代码:对应http返回的响应码
-
响应信息:匹配响应信息
-
Ignore Status:一个请求多项响应断言时,忽略某一项断言的响应结果,而继续下一项断言
响应断言:模式匹配
-
包括:响应的结果中包含指定的文本或者字段值,支持正则表达式
-
匹配:完全匹配,期望值与实际结果必须完全一致,一般结合正则表达式使用
-
Equals:响应结果与指定的内容完全一致,不支持正则表达式
-
SubString:返回结果,包含指定的字符串,不支持正则表达式
-
否:不进行匹配
二、Json断言
JSON断言有两种使用模式:
根据JSONPath能否在JSON文档中找到路径;
根据JSONPath提取值并对值进行验证。
若文档格式为非JSON则断言失败;找不到路径断言失败;提取值与预期值不一致断言失败。
Json断言是针对Json报文的断言方式,通Json Path提取出Json响应报文中的字段,再采用纯文本或者正则去验证Json Path的提取结果,Json结合了Json Path和正则表达式,有如下选项:
-
Additionally assert value:文本验证,此处是完全匹配,勾选上此选项后再勾选Match as regular expression,可以触发正则匹配。
-
Match as regular expression:支持正则表达式匹配
-
Expect null:判定返回为null
-
Invert assertion:倒置断言结果
Json Path是用于确定 JSON 文档中某部分元素位置的语言。它将 JSON 数据转换为 DOM 树状结构,并提供在数据结构中寻找节点的能力。Jmeter提供组件来验证Json Path的语法正确性,以及元素匹配情况。
可以在察看结果树中将响应报文的格式从Text切换为Json Path Tester,并在Json Path Expression栏中输入相应的Json Path ,点击Test,察看JsonPath的定位结果。
响应断言和Json断言可以涵盖大部分的接口校验需求,针对更加复杂的接口校验需求。
比如数据库校验,比如复杂计算逻辑的校验 ,可通过Beanshell断言组件编写脚本来实现断言。