- Postman实现接口测试
- 1.Postman介绍和安装
- 2.Postman基本用法
- 3.Postman高级用法
- 4.Postman测试报告
- 5.参数化–Postman读取外部数据文件
- 6.项目实战
Postman实现接口测试
1.Postman介绍和安装
2.Postman基本用法
管理测试用例Collection

断言
- 借助JS语言编写代码,自动判断预期结果与实际结果是否一致
- 断言代码写在Tests中
Post常用代码
1.断言响应状态码
1.在Tests标签中,选中Status Code:code is 200,生成对应代码 2.适当调整test0方法参数1,和匿名函数中的预期结果。 3.点击send按钮,发送请求,执行断言代码。
- 查看断言结果。
//断言响应状态码是否为200
pm.test("status code is 2oo",function(){
pm.response.to.have.status(200);
)};
D;
pm:代表postman的一个实例
test():是pm实例的一个方法。有两个参数
参数1:在断言成功后,给出的文字提示。可以修改。"statuscodeis200"
参数2:匿名函数。
pm.response.to.have.status(200);
//意思:postman的响应结果中应该包含状态码 200
2.断言响应体是否包含某个字符串
Response body: Contains string
//断言响应体包含指定字符串
pm.test("Body matches string",function(){
pm.expect(pm.response.text(O).to.include("string_you_want_to_search"});
pm:postman的一个实例
testO:postman实例的方法,有两个参数
参1:断言后显示的文字提示信息,可改。
参2:匿名函数
pm.expect (pm.response.text().to.include("string_you_want_to_search");
//意思:pm期望响应文本中,包含xxxx字符串。
"string_you_want_to_search"—---预期结果。 可以修改
3.断言响应体是否等于某个字符串(对象)
Response body: Is equal to a string
//断言响应体等于某个字符串(对象)
pm.test("Body is correct",function(){
pm.response.to.have.body("response_body_string);
});
pm.response.to.have.body("response_body_string");
//意思是,pm的响应中应该有响应体xxx
"response_body_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);
});
var jsonData = pm.response.json();
//varjsonData用js语法定义一个变量。jsonData就是变量名
//pm.response.json()代表响应的js结果
pm.expect(jsonData.value).to.eql (100);
//预期js结果中jsonData.value的值为100
//jsonData.value 的value可以改为某一key
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
示例:
//断言响应头
pm.test("content-Type is present",function (){
pm.response.to.have.header("Content-Type","application/json;charset=UTF-8");
//断言响应头 包含 : Content-Type: application/json;charset=UTF-8
Postman断言工作原理

3.Postman高级用法
Postman 作为 API 开发与测试的主流工具,除了基础的 “发送请求 - 查看响应” 功能外,其高级用法能极大提升 API 调试、测试和协作效率。以下是 Postman 核心高级用法的详细解析:
一、环境变量与全局变量:管理多场景配置
在实际开发中,API 往往需要在不同环境(如开发、测试、生产)中切换,且请求间可能共享参数(如 token、用户 ID)。环境变量(Environment) 和 全局变量(Global) 是解决这类问题的核心工具。
1. 核心概念
- 环境变量:仅在特定环境中生效(如 “开发环境”“测试环境”),适合区分不同环境的配置(如 baseURL、端口号)。
- 全局变量:在所有环境中生效,适合存储跨环境共享的固定值(如公司域名后缀)。
- 变量优先级:环境变量 > 全局变量(同名称时,环境变量覆盖全局变量)。
2. 操作方式
-
创建变量:
-
手动创建:在 Postman 右上角 “环境选择器” 中点击
Add,输入环境名(如 “dev”),添加变量(如baseURL: http://dev-api.example.com)。 -
脚本创建:通过测试脚本动态设置(最常用):
// 设置环境变量 pm.environment.set("token", "xxx-xxx-xxx"); // 设置全局变量 pm.globals.set("userId", "12345");
-
-
引用变量
:在请求 URL、Header、参数中用
pm.globals.get("gla_age") pm.enviroment.get("gla_age")引用,例如:
- URL:
/user/ - Header:
Authorization: Bearer
- URL:
-
查看 / 删除变量
:在环境面板中点击
Edit可查看所有变量,或通过脚本删除:
pm.environment.unset("token"); // 删除环境变量
二、集合(Collections)与批量运行:自动化测试基础
集合是 Postman 中组织 API 请求的核心单元,可将一组相关请求(如用户模块的 “登录 - 查询 - 修改”)归类,配合批量运行实现自动化测试。
1. 集合的核心功能
- 请求排序:拖拽调整请求执行顺序(如先登录,再用 token 调用其他接口)。
- 批量运行:点击集合右侧
▶️ Run,选择环境、迭代次数(如跑 10 次验证稳定性)、延迟时间等,Postman 会按顺序自动执行所有请求。 - 共享与协作:集合可导出(
.json)或通过 Postman 账号共享给团队,支持版本控制。
2. 实战场景:用户模块测试集合
创建一个 “UserAPI” 集合,包含 3 个请求:
登录:获取 token 并保存到环境变量;查询用户信息:使用登录返回的 token 和 userId;修改用户信息:依赖前两步的 token 和 userId。 批量运行时,Postman 会按顺序执行,自动传递变量,无需手动干预。


三、测试脚本(Tests):验证 API 响应
Postman 允许通过 JavaScript 脚本(基于 Node.js 环境)自动验证 API 响应,实现 “请求发送后自动判断是否符合预期”,是自动化测试的核心。
1. 脚本作用
- 验证响应状态码、响应时间、头部信息;
- 检查响应体中的字段值(如 JSON 数据的正确性);
- 提取响应数据到变量(供后续请求使用);
- 生成测试报告(通过 Newman 或 Postman 可视化)。
2. 常用脚本示例
在请求的 “Tests” 标签页编写脚本,以下是高频场景:
// 1. 验证响应状态码为 200(成功)
pm.test("Status code is 200", function () {
pm.response.to.have.status(200);
});
// 2. 验证响应时间小于 500ms(性能要求)
pm.test("Response time is less than 500ms", function () {
pm.expect(pm.response.responseTime).to.be.below(500);
});
// 3. 验证响应体为 JSON 格式
pm.test("Response is JSON", function () {
pm.response.to.be.json;
});
// 4. 验证 JSON 响应中的字段值(如登录成功后 code 为 0)
pm.test("Login success", function () {
const jsonData = pm.response.json(); // 解析 JSON 响应
pm.expect(jsonData.code).to.eql(0); // 检查 code 字段
pm.expect(jsonData.data).to.have.property("token"); // 确保返回 token
});
// 5. 提取响应数据到环境变量(关键!供后续请求使用)
const jsonData = pm.response.json();
pm.environment.set("token", jsonData.data.token); // 保存 token
pm.environment.set("userId", jsonData.data.userId); // 保存 userId
3. 脚本运行结果
发送请求后,“Test Results” 面板会显示每个测试用例的 pass/fail 状态,直观判断 API 是否符合预期。
四、前置脚本(Pre-request Script):动态生成请求参数
前置脚本在请求发送前执行,用于动态生成请求参数(如时间戳、签名、随机数),解决参数需要实时计算的场景(如接口签名验证)。
常用场景示例
// 1. 生成当前时间戳(如接口要求 timestamp 参数)|1970年1月1日至今的秒速
const timestamp = new Date().getTime().toString();
pm.environment.set("timestamp", timestamp); // 保存到变量,在请求参数中引用
// 2. 生成随机数(如验证码、订单号)
const randomNum = Math.floor(Math.random() * 10000);
pm.environment.set("randomOrderNo", `ORD${randomNum}`);
// 3. 计算接口签名(假设签名规则:md5(appSecret + timestamp))
const appSecret = "my-secret-key";
const timestamp = pm.environment.get("timestamp");
const sign = CryptoJS.MD5(appSecret + timestamp).toString(); // 需引入 CryptoJS(Postman 内置)
pm.environment.set("sign", sign);
引用方式:在请求参数中用 、 即可。
查看发送结果:

五、变量传递与工作流控制:实现请求依赖
当多个请求存在依赖关系(如 “登录→查询订单→支付”),需通过 “变量传递 + 工作流控制” 确保执行顺序和数据连贯性。
A接口依赖B接口的数据 1.向B接口发送http请求,获取数据 2.将数据设置至全局变量(环境变量)中 3.A接口获取全局变量(环境变量)中数据值,进行使用。
1. 变量传递完整流程(以登录→查询用户为例)
-
Step 1:登录请求
在 “Tests” 中提取 token 并保存:
const jsonData = pm.response.json(); pm.environment.set("token", jsonData.data.token); // 保存登录 token //从响应结果中,获取城市名 var jsonData = pm.response.json() var city = jsonData.weatherinfo.city //将城市名写入到全局变量 pm.globals.set("glb_city",city) -
Step 2:查询用户请求 在 Header 中引用 token:
Authorization: Bearer,即可携带登录状态。
2. 工作流控制(自定义执行顺序)
默认按集合中请求的顺序执行,如需跳转到指定请求(如失败时跳过后续步骤),可通过 postman.setNextRequest() 控制:
// 在“登录”请求的 Tests 中:如果登录失败,停止执行
const jsonData = pm.response.json();
if (jsonData.code !== 0) {
postman.setNextRequest(null); // 终止工作流
} else {
postman.setNextRequest("查询用户信息"); // 跳转到指定请求(需填写请求名)
}
六、拦截器(Interceptor):捕获浏览器请求
Postman 拦截器可同步浏览器的 cookie 和请求,解决 “需要登录状态才能调试的 API”(如前端页面调用的接口,依赖浏览器 cookie)。
使用方式
- 安装拦截器:点击 Postman 顶部工具栏的
Interceptor图标,安装浏览器插件(Chrome/Firefox)。 - 启用拦截器:在 Postman 中开启
Interceptor开关,此时浏览器的请求会被 Postman 捕获(在 “History” 中查看)。 - 应用场景:直接复制浏览器中的请求到 Postman 调试,无需手动设置 cookie 或 token。
七、Mock Server:前端并行开发
当后端 API 尚未开发完成,前端可通过 Postman 的 Mock Server 模拟 API 响应,提前进行开发和测试。
创建步骤
- 在集合中选择一个请求,点击
Save as Mock,设置模拟响应(如状态码 200,响应体{"code":0, "data": {"name": "mock user"}})。 - Postman 生成一个 Mock URL(如
https://xxx.mock.pstmn.io/user),前端直接调用该 URL 即可获取模拟数据。 - 后端 API 开发完成后,只需将前端请求地址切换为真实接口,无需修改逻辑。
八、Newman:命令行运行与 CI/CD 集成
Newman 是 Postman 的命令行工具,可将集合测试集成到自动化部署流程(如 Jenkins、GitHub Actions),实现 “代码提交后自动运行 API 测试”。
基础用法
-
安装 Newman:
npm install -g newman -
导出集合(
.json)和环境配置(.json)。 -
命令行运行:
newman run 我的集合.json -e 开发环境.json -r html --reporter-html-export 测试报告.html-e:指定环境配置-r html:生成 HTML 测试报告- 更多参数:支持迭代次数、延迟时间、失败停止等。
九、其他实用高级功能
- 文档生成:在集合或请求的 “Documentation” 标签页添加描述(如参数说明、返回值解释),点击
Publish生成在线文档,支持分享给团队。 - 监控(Monitors):设置定时任务(如每小时)运行集合,监控 API 可用性和性能,异常时通过邮件 / Slack 报警。
- Schema 验证:通过
tv4库验证响应体是否符合 JSON Schema 规范(确保 API 输出格式一致)。
总结
Postman 的高级用法围绕 “自动化”“协作” 和 “场景覆盖” 展开:
- 环境变量解决多环境配置问题;
- 测试脚本和 Newman 实现自动化验证;
- 集合和工作流控制管理请求依赖;
- Mock Server 和文档功能提升团队协作效率。
掌握这些功能,可将 API 开发与测试效率提升数倍,尤其适合前后端分离、持续集成的开发模式。
4.Postman测试报告
node.js的库: newman + newreporter-html
npm install -g newman
npm install -g newman-reporter-html
执行测试 使用newman命令,运行导出的测试集脚本,打开cmd输入:
newman run 测试脚本文件.json -e 环境变量文件 -d 测试数据文件 -r html --reporter-html-export 测试报告.html
eg:
newman run demo.postman_collection.json -r html
newman run demo.postman_collection.json -r html --reporter-html-export report.html
命令说明 ●run xxx.json:表示要执行的postman脚本,即导出的测试集数据 ●-esource:用来指定环境变量文件的路径 ●-dsource:用来指定测试数据文件的路径
使用newman生成测试报告
步骤: 1.批量执行测试用例集。(确认无误) 2.导出Export 用例集。(得到xxxx.json文件) 3.在终端中执行命令,生成测试报告
完整的命令
newman run xxxx.json -e 环境变量文件 -d 外部数据文件 -rhtml--reporter-html-export 测试报告名.html
#现在终端中,测试一下。
newman run xxxx.json
#如果添加 -r html就报错!
说明newman-reporter-html安装失败!
5.参数化–Postman读取外部数据文件

当http请求,使用的数据有较高相似度时,相同的请求时,考虑使用参数化(将数据组织到数据文件中)。
数据文件简介
CSV:
- 优点: 数据组织形式简单,适用于大量数据的场合。
- 缺点: 1.不支持bool类型数据。(数据被postman读入后,自动添加”“包裹bool值。) 2.不支持多参、少参、无参、错误参数的接口测试。 3.不支持复杂数据类型。(如嵌套字典、列表等)
JSON:
- 优点: 1.支持bool类型。 2.支持多参、少参、无参、错误参数 3.支持复杂数据类型。
- 缺点: 对于相同数据量,json数据文件大小远大于CSV文件。
导入外部数据文件
CSV文件 1.创建xxx.csv文件。 2.将数据写入到csv文件中。
- 第一行写入的是数据对应的“字段名”。
- 从第二行向后依次是对应的数值,数据间用英文逗号隔分。
3.在Postman中,选中使用数据文件的用例集,导入数据文件。

JSON文件 1.创建xxx.json数据文件 2.在数据文件中,按json语法写入json数据。postman要求,json格式的数据文件,数据内容的最外层,必须是[]。内部所有的数据用0存储。
3.在Postman中,选中使用数据文件的用例集,导入数据文件。 1.点击用例集名称,使用Run按钮,进入“Runner”页面。 2.使用“”Select File”按钮选择xxx.json文件。 3.点击预览按钮,校验数据文件是否正确。
特性1:postman会循环一行一行的读取{}中的数据。 特性2:建议书写json数据时,无论是不是字符串,都可以用
" "包裹
读取数据文件数据
根据使用数据]位置不同,有两种获取数据文件中数据的方法。 ·第一种:请求参数(请求行、请求头、请求体)中,使用数据文件中的数据
- 使用包裹csv文件字段名或json文件中的key 如: 或
·第二种:代码(断言、请求前置脚本)中,使用数据文件中的数据
- 需要借助postman提供的关键字data点csv文件的字段名或json文件的key 如:data.username或data.password
6.项目实战
案例一
使用Postman向topshop商城登录接口发送一个密码错误的登录请求
· 请求方法:post
URL: http://tpshop-test.itheima.net/index.phpm=Home&c=User&a=do login&t=0.6693319462870182
请求头:Content-Type:application/x-www-form-urlencoded
·请求体:
username: 13812345678
password:1234569999
verify_code:8888
·返回数据: