以下主要介绍接口断言的三种方式:Response Assertion(响应断言)、JSON Assertion(JSON断言)、BeanShell Assertion(BeanShell断言)。
在接口自动化中,需要判断接口响应结果是否符合预期,这时我们就要用到断言,类似LoadRunner中设置检查点。
一
Response Assertion
使用场景
在接口测试过程中,需要对接口响应数据进行规则匹配。
Response Assertion(响应断言)界面说明
① HTTP请求,右键,依次选择添加--》断言--》响应断言。
② 响应断言界面如下:
Apply to:
Main sample and sub-samples: 范围包括主取样器与所有子取样器。
Main sample only : 范围仅限于主取样器。
Sub-samples only :范围仅限于所有子取样器。
JMeter Variable Name to use :范围包括使用的Jmeter变量。
测试字段:
响应文本:响应正文(常用)。
响应代码:响应状态码,比如200、304、404等。
响应信息:响应消息,比如OK、Not Modified、Not Found等。
响应头:响应请求头。
请求头:请求头。
URL样本:请求的URL。
文档(文本):从各种类型的文档中提取文本。此选项开启也会严重影响性能,谨慎使用。
忽略状态:忽略响应状态。
请求数据:请求的body内容。
模式匹配规则:
包括:如果文本包含正则表达式模式,则为true。
匹配:如果整个文本与正则表达式模式匹配,则为true。
相等: 如果整个文本等于模式字符串(区分大小写),则为true。
字符串:如果文本包含模式字符串(区分大小写),则为true。
否:对断言结果进行否定。
或者:将多个测试模式以逻辑“或”组合起来。
实战小例子
① 创建线程组、HTTP请求、察看结果树。
② HTTP请求右键,创建一个响应断言。我们再来看下响应结果的信息:
{ "data": { "mobile": "12345678", "id": 500, "rid": 0, "email": "adsfad@qq.com", "username": "admin", "token": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1aWQiOjUwMCwicmlkIjowLCJpYXQiOjE1OTA5MDY3MzAsImV4cCI6MTU5MDk5MzEzMH0.M3CWrgsDUMvnhkprQMBJ1wWY5OKO-mKiOD4EJ2YV4zc" }, "meta": { "msg": "登录成功", "status": 200 } }
断言的方式可以多种,比如msg、status或者msg与status一起断言,用其他返回的字段也可以。
这里我们用msg断言,配置如下:
③ 运行后,如断言失败,在察看结果树里http请求会红色显示。
JSON Assertion
使用场景
Json断言适用于接口响应数据为Json格式。
JSON Assertion(JSON断言)界面说明
① HTTP请求,右键依次选择Add--》Assertions--》JSON Assertion。
② JSON Assertion界面如下:
Assert JSON Path exists:添加json path表达式。
Additionally assert value:通过值匹配, 只有勾选了此复选框,才可以在Expected Value中设置期望的值。
Match as regular expression:通过匹配正则表达式匹配,只有勾选了此复选框,才可以在Expected Value中设置正则表达式。
Expect null:期望值为null,如果期望的值为null,可以勾选此项。
Invert assertion:如果匹配的值存在,则断言失败,不匹配,则断言成功。
实战小例子
① 创建线程组、HTTP请求、察看结果树。
② 登录接口响应结果如下:
{ "data": { "mobile": "12345678", "id": 500, "rid": 0, "email": "adsfad@qq.com", "username": "admin", "token": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1aWQiOjUwMCwicmlkIjowLCJpYXQiOjE1OTA5MDY3MzAsImV4cCI6MTU5MDk5MzEzMH0.M3CWrgsDUMvnhkprQMBJ1wWY5OKO-mKiOD4EJ2YV4zc" }, "meta": { "msg": "登录成功", "status": 200 } }
③ 新建JSON Assertion,用返回结果的msg断言,配置如下:
④ 运行后,如断言失败,在察看结果树里http请求会红色显示。
BeanShell Assertion
使用场景
BeanShell断言可以使用beanshell脚本来执行断言检查,可以用于更复杂的个性化需求,使用更灵活,功能更强大,但是要能够熟练使用beanshell脚本。
BeanShell Assertion(BeanShell 断言)界面说明
① HTTP请求,右键依次选择Add--》Assertions--》BeanShell Assertion。
② BeanShell Assertion界面如下:
Reset bsh.Interpreter before each call:若选择此项,则将为每个样本创建对应的解释器。
Parameters:
传递到脚本的参数,有如下两种参数传递方式:
String Parameters:作为单一的变量参数传递;
String[] bash.args:作为数组的字符串数组参数,参数之间通过空格进行分割;
Script file:包含 BeanShell 脚本的运行文件。将重写当前脚本 Script,其文件名存储在脚本变量名中。
Script:手动编写BeanShell 脚本。
实战小例子
① 创建线程组、HTTP请求、察看结果树。
② 登录接口响应结果如下:
{ "data": { "mobile": "12345678", "id": 500, "rid": 0, "email": "adsfad@qq.com", "username": "admin", "token": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1aWQiOjUwMCwicmlkIjowLCJpYXQiOjE1OTA5MDY3MzAsImV4cCI6MTU5MDk5MzEzMH0.M3CWrgsDUMvnhkprQMBJ1wWY5OKO-mKiOD4EJ2YV4zc" }, "meta": { "msg": "登录成功", "status": 200 } }
③ 新建BeanShell Assertion,编写BeanShell脚本,如下:
④运行后,如断言失败,在察看结果树里http请求会红色显示。