news 2026/4/16 13:29:43

【接口测试】工具篇Postman

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【接口测试】工具篇Postman

本文大纲截图:

一、Postman简介和安装【看到最后有...】

简介: Postman 是一款非常流行的接口调试工具,它使用简单,而且功能也很强大。不仅测试人员会使用,开发人员也经常使用。

二、Postman高级用法

1、管理测试用例
2、全局变量和环境变量

全局变量:

环境变量:

3、请求前置脚本

介绍: 在send按钮点击后,请求前置脚本代码第一时间被执行。即在 postman 内部实际http请求之前。

假设场景: 调某接口时,要输入“时间戳”,如果输入的“时间戳”的绝对值,超过标准时间10分钟,则不允许调用。

时间戳: 对应绝对时间,从1970年1月1日 00:00:00 到现在 所经历的秒数。一天为86400秒,则距现在为51年6月9天,即1624665600秒。

案例: 调用百度首页接口,传时间戳给服务器

实现步骤:

postman 前置脚本工作原理:

4、关联

介绍: 应用于多个http请求之间,有数据关联、或依赖关系时。

实现步骤: A接口依赖B接口的数据

案例: 请求获取天气接口,提取响应结果中的城市,将城市名给百度搜索接口使用。

实现步骤:

5、断言

简介: postman 断言借助JavaScript-js语言编写代码,写在Tests标签页里,自动判断预期结果与实际结果是否一致。

postman 断言工作原理:

postman常用断言:

1、断言响应状态码

名称:Status code: Code is 200

步骤:

示例:断言响应状态码是否为200

2、断言响应体是否包含某个字符串

名称:Response body: Contains string

示例:断言响应体包含指定字符串

3、断言响应体是否等于某个字符串(对象)

名称:Response body: Is equal to a string

示例:断言响应体等于某个字符串(对象)

4、断言 JSON 数据

名称:Response body:JSON value check

示例:断言json的响应结果

pm.test("Your test name", function () { var jsonData = pm.response.json(); pm.expect(jsonData.value).to.eql(100); });
pm.test("断言响应结果success的值为true", function () { var jsonData = pm.response.json(); pm.expect(jsonData.success).to.eql(true); });
pm.test("断言响应结果code的值为10000", function () {:var jsonData = pm.response.json(); pm.expect(jsonData.code).to.eql(10000); });
pm.test("断言响应结果message的值为 操作成功!", function () { var jsonData = pm.response.json(); pm.expect(jsonData.message).to.eql("操作成功!"); });
var jsonData = JSON.parse(responseBody); tests["Your test name"] = jsonData.value === 100;
var jsonData = JSON.parse(responseBody); tests["断言相应结果success的值为true"] = jsonData.value === true;

5、断言响应头

名称:Response headers: Content-Type header check

示例:断言响应头

pm.test("Content-Type is present", function () { pm.response.to.have.header("Content-Type"); }); pm.response.to.have.header("Content-Type"); // pm的响应头中包含Content-Type

6、数据驱动

当http请求,使用的 数据有较高相似度,相同的请求时,考虑使用参数化(将数据组织到数据文件中)。

数据文件简介: CSV、JSON

CSV:

JSON:

导入外部数据文件: CSV文件、JSON文件

CSV文件:

JSON文件:

读取数据文件数据:

根据使用数据位置不同,有两种获取数据文件中数据的方法。

第一种: 请求参数(请求行、请求头、请求体)中,使用数据文件中的数据

第二种: 代码(断言、请求前置脚本)中,使用数据文件中的数据

特性:

案例:

7、批量执行测试用例

8、测试报告

安装插件newman:

使用newman生成测试报告:

# 现在 终端中,测试一下。 newman run xxxx.json # 完整的命令 newman run xxxx.json -e 环境变量文件 -d 外部数据文件 -r html --reporter-html-export 测试报告名.html # 示例: newman run 批量执行测试用例.postman_collection.json -r html --reporter-html-export 我的第一个测试报告.html # 如果添加 -r html 就报错!说明: newman-reporter-html 安装失败!

三、Postman接口测试实践

以某公司的人力资源管理系统接口测试为例,来具体说明Postman在具体项目中的实践。

1、项目环境说明
2、初始化项目环境

3、设计编写测试用例

以登录模块和员工管理模块为例,来说明用Postman设计编写接口测试用例。

步骤:

登录模块:

员工管理模块:

步骤分析:

步骤实施:

发送请求:

拼接合法令牌,并设置环境变量:

代码:

// 拼接 data 的值,添加 Bearer 和 空格,组成合法令牌 // 获取响应体,保存在 jsonData变量中 var jsonData = pm.response.json() // 提取 data 值,保存在 tmp_token中 var tmp_token = jsonData.data // 拼接 Bearer 和 空格 到 data 值的前面,"Bearer" + " " + tmp_token pm.environment.set("env_token", "Bearer" + " " + tmp_token)

代码:

// 获取响应体,保存到jsonData变量中 var jsonData = pm.response.json() // 提取 data 值,保存tmp_id 变量中 var tmp_id = jsonData.data.id // 设置 tmp_id 到环境变量中 pm.environment.set("env_emp_id", tmp_id) pm.test("Status code is 200", function () { pm.response.to.have.status(200); }); pm.test("断言success的值为true", function () { var jsonData = pm.response.json(); pm.expect(jsonData.success).to.eql(true); }); pm.test("断言code的值为10000", function () { var jsonData = pm.response.json(); pm.expect(jsonData.code).to.eql(10000); }); pm.test("断言message的值为 操作成功!", function () { var jsonData = pm.response.json(); pm.expect(jsonData.message).to.eql("操作成功!"); });

查询员工请求Params截图:

查询员工请求Headers截图:查询员工请求Tests截图:断言代码:

pm.test("Status code is 200", function () { pm.response.to.have.status(200); }); pm.test("断言success的值为true", function () { var jsonData = pm.response.json(); pm.expect(jsonData.success).to.eql(true); }); pm.test("断言code的值为10000", function () { var jsonData = pm.response.json(); pm.expect(jsonData.code).to.eql(10000); }); pm.test("断言message的值为 操作成功!", function () { var jsonData = pm.response.json(); pm.expect(jsonData.message).to.eql("操作成功!"); }); pm.test("断言data中id的值为 1447229608624652288", function () { var jsonData = pm.response.json(); pm.expect(jsonData.data.id).to.eql(pm.environment.get("env_emp_id")); });
4、批量运行测试用例
5、生成测试报告

最后:下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】

​​​软件测试面试文档

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/13 14:14:47

Pytest fixture 及 conftest详解!

前言 fixture是在测试函数运行前后,由pytest执行的外壳函数。fixture中的代码可以定制,满足多变的测试需求,包括定义传入测试中的数据集、配置测试前系统的初始状态、为批量测试提供数据源等等。fixture是pytest的精髓所在,类似u…

作者头像 李华
网站建设 2026/4/13 13:43:03

生成式AI提升编程效率,但仅限特定开发者群体

全球AI生成代码的数量在过去两年中增长了六倍,从2022年的5%增长到2024年底的近30%。伴随而来的是程序员生产力的显著提升。这些发现来自复杂性科学中心(CSH)的一项新研究,该研究考察了AI工具和平台对软件开发的影响。研究人员开发…

作者头像 李华
网站建设 2026/4/16 12:42:14

Automation-scripts - 一个包含常用脚本的Python库

1、前言 日常自动化或测试中,都会写一些辅助的脚本来支撑整个测试任务能顺利进行,比如格式转换、加密解密、发送邮件等操作,频繁使用这些操作,就需要开发一些公共的方法,使用时调用即可。 2、简介 Automation-scrip…

作者头像 李华
网站建设 2026/4/13 19:59:15

AI 驱动的 ReportPortal 与 Java 在自动化测试领域的深度融合

在上一篇文章【AI 驱动的自动化测试报告平台 ReportPortal,让你的测试如虎添翼(Python 实战篇)】中,我们详尽地阐述了 ReportPortal 与 Python 的集成流程,展示了 Python 自动化测试项目报告在ReportPortal 上的展示。…

作者头像 李华
网站建设 2026/4/16 12:29:14

Maingear推出限量版怀旧PC重现90年代经典

90年代的一切都在回归——从随身听和磁带到后垃圾摇滚。游戏PC制造商Maingear紧跟这一潮流,推出了一款90年代风格的PC——Retro98。该公司表示,这款PC甚至配备了一个真正有效的Turbo按钮,不过它并非改变CPU频率,而是将冷却系统提升…

作者头像 李华