Jmeter系列之接口断言

上一篇:JMeter系列之接口依赖,主要介绍接口依赖的三种处理方式:JSON Extractor、正则表达式、边界提取器(Boundary Extractor)。

以下主要介绍接口断言的三种方式:Response Assertion(响应断言)、JSON Assertion(JSON断言)、BeanShell Assertion(BeanShell断言)

在接口自动化中,需要判断接口响应结果是否符合预期,这时我们就要用到断言,类似LoadRunner中设置检查点。

一、Response Assertion

1、使用场景

在接口测试过程中,需要对接口响应数据进行规则匹配。

2、 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。

否:对断言结果进行否定。

或者:将多个测试模式以逻辑“或”组合起来。

3、实战小例子

① 创建线程组、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

1、使用场景

Json断言适用于接口响应数据为Json格式。

2、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:如果匹配的值存在,则断言失败,不匹配,则断言成功。

3、实战小例子

① 创建线程组、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

1、使用场景

BeanShell断言可以使用beanshell脚本来执行断言检查,可以用于更复杂的个性化需求,使用更灵活,功能更强大,但是要能够熟练使用beanshell脚本。

2、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 脚本。

3、实战小例子

① 创建线程组、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请求会红色显示。

今日问题:

在接口自动化过程中,你是如何进行接口断言的?

感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

① 2000多本软件测试电子书(主流和经典的书籍应该都有了)

② 软件测试/自动化测试标准库资料(最全中文版)

③ 项目源码(四五十个有趣且经典的练手项目及源码)

④ Python编程语言、API接口自动化测试、web自动化测试、App自动化测试(适合小白学习)

 

⑤ Python学习路线图(告别不入流的学习)

在我的QQ技术交流群里(技术交流和资源共享,广告进来腿给你打断)

可以自助拿走,群号953306497(备注“csdn111”)群里的免费资料都是笔者十多年测试生涯的精华。还有同行大神一起交流技术哦。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值