Postman 使用 Tests 脚本断言需在请求面板点击"Tests"标签,编写 JavaScript 代码调用 pm.test() 定义用例,并通过 pm.response 对象获取状态码或 JSON 数据进行 pm.expect() 验证。适用于接口自动化测试场景,脚本在收到响应后自动执行。
先说结论:Postman 断言依赖 Tests 标签页内的 JavaScript 脚本,核心是使用 pm.test 包裹验证逻辑。
- 适合:接口回归测试与自动化校验场景
- 先看:Tests 标签页脚本编辑区与 Test Results 面板
- 建议:优先使用 pm.test 新语法而非旧版 tests[] 赋值写法
命令速用版
// 断言状态码为 200
pm.test("Status code is 200", function () {
pm.response.to.have.status(200);
});
// 断言 JSON 字段值
pm.test("Validate field value", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.field_name).to.equal("expected_value");
});为什么会这样
Tests 脚本在收到 HTTP 响应后执行,基于 JavaScript 沙箱环境运行。Postman 内置 pm 对象提供响应数据访问能力,断言本质是将预期结果与实际响应数据进行比对,一致则 PASS,不一致则 FAIL。
分步处理
- 进入脚本编辑区:在 Postman 请求界面顶部导航栏点击"Tests"标签,右侧会显示代码编辑器。
- 编写断言逻辑:使用 pm.test("描述", function(){}) 定义测试用例,内部通过 pm.response 获取状态码、响应头或响应体。
- 发送请求:点击"Send"按钮提交请求,Postman 会在接收响应后自动运行 Tests 脚本。
- 查看执行结果:在响应区域下方的"Test Results"面板查看每条断言的 Pass 或 Fail 状态。
怎么验证是否生效
发送请求后,观察界面底部的"Test Results"面板。若断言通过,对应用例前显示绿色 PASS 标记;若断言失败,显示红色 FAIL 标记并可在控制台查看错误详情。也可在集合 runner 模式中查看整体通过率。
常见坑
- 语法版本混淆:旧版语法 tests["name"] = logic 仍可用,但新版 pm.test() 提供更丰富的断言链式调用,建议统一使用新语法。
- JSON 解析错误:若响应体不是合法 JSON,调用 pm.response.json() 会脚本报错,需先用 pm.response.text() 检查内容类型。
- 异步执行误解:Tests 脚本是同步执行的,不能在脚本内使用 setTimeout 等异步逻辑等待响应,因为响应已接收完毕。
常见问题
如何获取响应头进行断言?
使用 pm.response.headers.get("Header_Name") 获取特定头信息,再配合 pm.expect 进行值比对。
怎么验证响应时间是否达标?
通过 pm.response.responseTime 获取毫秒数,使用 pm.expect(pm.response.responseTime).to.be.below(500) 验证是否小于 500ms。
旧版 tests[] 语法还能用吗?
公开资料中显示旧版语法仍被支持,但新版本的 pm.test 功能更完整,建议新脚本直接使用 pm.test 写法。
参考来源
- Postman Tests 断言库使用案例
- 在 Postman 中如何进行断言操作?_百度教育
- 接口测试系列 (五)- Postman 断言
- 『政善治』Postman 工具 — 9、在 Postman 中使用断言 - 博客园 (https://go.pstmn.io/docs-test-scripts)
- 接口测试|Postman 设置断言