当前位置: 首页 > article >正文

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

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

POSTMAN的断言

01、断言的基本概念

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

02、响应状态码断言

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

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

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

03、响应正文断言

响应正文是接口返回给客户端的数据内容。在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;  });

05、其他断言方式

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

依赖接口的测试

在实际项目中,接口之间往往存在依赖关系。例如,一个接口可能需要先调用另一个接口获取数据,然后再将获取到的数据作为参数传递给当前接口进行测试。在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运行集合中的请求,并查看测试结果。

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

软件测试面试文档

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


http://www.kler.cn/a/381767.html

相关文章:

  • 基于STM32单片机太阳能充电循迹避障小车
  • vue 使用docx-preview 预览替换文档内的特定变量
  • uniapp h5端临时路径转file对象上传
  • Hugging Face 两种加载模型的方式有什么区别
  • 【JAVA】java 企业微信信息推送
  • java.io.FileNotFoundException: Could not locate Hadoop executable: (详细解决方案)
  • 工具方法 - Windows下如何输入特殊字符
  • 网易数据中台实践:高效管理与成本优化的秘密
  • MySQL:Can‘t change size of file (OS errno 28 - No space left on device)
  • Windows11下将某个程序添加到鼠标右键快捷菜单
  • ReactPress系列—Next.js 的动态路由使用介绍
  • 【算力基础】GPU算力计算和其他相关基础(TFLOPS/TOPS/FP32/INT8...)
  • 【算法】递归+深搜:106.从中序与后序遍历序列构造二叉树(medium)
  • 「Mac畅玩鸿蒙与硬件21」鸿蒙UI组件篇11 - Canvas 组件的静态进阶应用
  • go语言中的nil类型
  • debian系统安装qt的时候 显示xcb相关文件缺失
  • 在培训班学网络安全有用吗
  • 【maven】idea执行了maven的install命令给本地安装项目依赖包 安装后删除
  • Python使用爬虫
  • CSS Position 定位如何使用?
  • 5个有效的华为(HUAWEI)手机数据恢复方法
  • java项目之校园周边美食探索及分享平台(springboot)
  • Neo4j入门:详解Cypher查询语言中的MATCH语句
  • [论文阅读]BERT-based Lexical Substitution
  • 写文件回前端进行下载,报错:原因:CORS 头缺少 ‘Access-Control-Allow-Origin‘)
  • 青少年编程与数学 02-003 Go语言网络编程 10课题、HTTP/HTTPS协议