Postman断言与依赖接口测试详解!

在接口测试中,断言是不可或缺的一环。它不仅能够自动判断业务逻辑的正确性,还能确保接口的实际功能实现符合预期。Postman作为一款强大的接口测试工具,不仅支持发送HTTP请求和接收响应,还提供了丰富的断言功能,帮助测试人员验证接口的行为是否符合预期。

POSTMAN的断言

0 1、断言的基本概念

断言是对接口响应结果的验证,通过检查响应的状态码、正文、头部字段或响应时间等,确保接口返回的数据符合测试预期。在Postman中,断言通常在当前请求发送之后,通过编写测试脚本来实现。

0 2、响应状态码断言

响应状态码是HTTP协议中用于表示请求处理结果的数字代码。在Postman中,可以使用以下脚本对响应状态码进行断言:

复制代码
pm.test("响应状态码是200?", function () {      pm.response.to.have.status(200);  });

这段脚本会检查响应的状态码是否为200,如果不是,则测试失败。

0 3、响应正文断言

响应正文是接口返回给客户端的数据内容。在Postman中,可以使用以下两种方式对响应正文进行断言:

  • 包含子字符串:检查响应正文中是否包含指定的子字符串。

  • JSON断言:对响应正文进行JSON解析,并检查特定字段的值是否符合预期。

例如,以下脚本用于断言响应正文中包含特定的消息内容:

复制代码
pm.test("断言响应结果字段是", function () {      var jsonData = pm.response.json();      pm.expect(jsonData.msg).to.eql("操作成功");  });

这段脚本会解析响应正文为JSON对象,并检查msg字段的值是否为"操作成功"。

04、数据格式断言

除了对具体字段的值进行断言外,还可以对响应数据的格式进行断言。例如,可以检查响应正文是否为对象、特定字段是否为字符串或数字等。以下脚本用于断言响应数据的格式:

复制代码
const jsonData = pm.response.json();  pm.test("测试响应文本的数据类型", () => {      pm.expect(jsonData).to.be.an("object");      pm.expect(jsonData.name).to.be.a("string");      pm.expect(jsonData.age).to.be.a("number");      pm.expect(jsonData.hobbies).to.be.an("array");      pm.expect(jsonData.website).to.be.undefined;      pm.expect(jsonData.email).to.be.null;  });

0 5、其他断言方式

除了上述常见的断言方式外,还可以使用其他断言方式,如响应时间断言等。这些断言方式可以根据测试需求进行选择和组合。

依赖接口的测试

在实际项目中,接口之间往往存在依赖关系。例如,一个接口可能需要先调用另一个接口获取数据,然后再将获取到的数据作为参数传递给当前接口进行测试。在Postman中,可以通过以下方式实现依赖接口的测试:

1. 使用环境变量

在Postman中,可以使用环境变量来存储依赖接口返回的数据。例如,可以先调用依赖接口获取用户ID,然后将用户ID存储为环境变量,并在后续接口测试中引用该环境变量。

2. 使用Pre-request Script

Pre-request Script是Postman中用于在发送请求之前执行的脚本。可以在Pre-request Script中调用依赖接口,并将返回的数据存储为全局变量或环境变量,供后续请求使用。

3. 使用Collection Runner

Collection Runner是Postman中用于批量运行集合中请求的工具。在Collection Runner中,可以指定依赖关系的顺序,并依次运行集合中的请求。通过这种方式,可以方便地实现依赖接口的测试。

三、实战案例

以下是一个简单的实战案例,展示了如何在Postman中进行断言和依赖接口的测试:

案例背景

假设有两个接口:

  • 接口A:用于获取用户信息,返回用户ID和用户名。

  • 接口B:用于获取用户的订单信息,需要传入用户ID作为参数。

测试步骤

  1. 调用接口A获取用户信息,并将用户ID存储为环境变量。

  2. 在Pre-request Script中或直接在接口B的请求中引用环境变量中的用户ID。

  3. 调用接口B获取用户的订单信息,并对响应结果进行断言。

具体实现

  1. 创建一个新的集合,并添加两个请求,分别对应接口A和接口B。

  2. 在接口A的请求中,编写测试脚本将用户ID存储为环境变量:

    pm.test("存储用户ID为环境变量", function () { var jsonData = pm.response.json(); pm.environment.set("user_id", jsonData.id); });

3.在接口B的请求中,使用环境变量中的用户ID作为参数:

https://example.com/orders?user_id={{user_id}}

4.在接口B的请求中,编写测试脚本对响应结果进行断言:

复制代码
pm.test("断言订单数量大于0", function () {      var jsonData = pm.response.json();      pm.expect(jsonData.orders.length).to.be.greaterThan(0);  });

5.使用Collection Runner运行集合中的请求,并查看测试结果。

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

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

相关推荐
叁沐6 分钟前
MySQL 05 深入浅出索引(下)
mysql
陈卓41037 分钟前
MySQL-主从复制&分库分表
android·mysql·adb
你都会上树?1 小时前
MySQL MVCC 详解
数据库·mysql
长征coder2 小时前
AWS MySQL 读写分离配置指南
mysql·云计算·aws
ladymorgana3 小时前
【docker】修改 MySQL 密码后 Navicat 仍能用原密码连接
mysql·adb·docker
PanZonghui3 小时前
Centos项目部署之安装数据库MySQL8
linux·后端·mysql
GreatSQL社区3 小时前
用systemd管理GreatSQL服务详解
数据库·mysql·greatsql
掘根3 小时前
【MySQL进阶】错误日志,二进制日志,mysql系统库
数据库·mysql
weixin_438335403 小时前
基础知识:mysql-connector-j依赖
数据库·mysql
小明铭同学3 小时前
MySQL 八股文【持续更新ing】
数据库·mysql