Skip to content

一、从手动调试到自动化测试 ​

很多工程师使用 Postman 时,仅将其当作一个“界面版 cURL”:登录接口跑一次,按 F12 复制 Response 里的 token,然后再手动粘贴到几十个业务接口的 Authorization: Bearer <token> 请求头中。

一旦 Token 过期(如 30 分钟),整个集合的几十个接口全报 401,又得重新登录复制粘贴一遍。

工程化用法是利用 Postman 内置的 JavaScript 沙箱,让数据在接口之间自动流转、自动校验,并通过命令行工具无缝融入流水线。


二、自动登录并注入全局环境变量 ​

在登录接口的 Tests 脚本标签页中编写响应后处理逻辑:

javascript
// 1. 验证登录接口本身状态码正常
pm.test("HTTP 状态码应为 200", function () {
    pm.response.to.have.status(200);
});

// 2. 解析 JSON 响应体
var resData = pm.response.json();

// 3. 提取 Token 并自动更新到环境变量中
pm.test("成功获取并注入 JWT 鉴权凭证", function () {
    pm.expect(resData.code).to.eql(0);
    pm.expect(resData.data.token).to.not.be.empty;

    // 自动持久化写入当前 Environment
    pm.environment.set("jwt_token", resData.data.token);
    pm.environment.set("current_user_id", resData.data.userId);
    console.log("✓ 鉴权凭证已自动注入环境变量");
});

全局生效配置: ​

在整个集合(Collection)或具体的文件夹层级,将 Authorization 类型选择为 Bearer Token,Token 处直接填写 。

后续所有业务接口直接继承父级鉴权(Inherit auth from parent),一处登录,全集合自动免密执行。


三、Pre-request Script:动态参数与签名计算 ​

很多安全要求高的接口要求在发送请求前携带动态时间戳、随机 UUID 或 HMAC-SHA256 签名:

javascript
// 在请求发起前自动计算并写入变量
var timestamp = Math.floor(Date.now() / 1000);
var nonce = pm.variables.replaceIn('{{$guid}}');

pm.environment.set("req_timestamp", timestamp);
pm.environment.set("req_nonce", nonce);

// 模拟动态计算安全签名
var rawString = "appId=1001&nonce=" + nonce + "&timestamp=" + timestamp;
var signature = CryptoJS.MD5(rawString).toString();
pm.environment.set("req_sign", signature);

在请求参数或 Header 中直接引用:X-Sign: ,彻底消除手动构造签名的繁琐工作。


四、Tests 深度断言链 ​

Postman 基于 Chai.js 断言库,提供了极佳的自解释断言写法:

javascript
var jsonData = pm.response.json();

pm.test("业务字段结构及约束校验", function () {
    // 响应时间必须在 800ms 以内
    pm.expect(pm.response.responseTime).to.be.below(800);

    // 状态码为成功
    pm.expect(jsonData.success).to.be.true;

    // 校验数组列表不为空且包含目标对象
    pm.expect(jsonData.data.items).to.be.an("array").that.is.not.empty;
    pm.expect(jsonData.data.items[0]).to.have.property("deviceId");
});

五、融入 CI/CD 流水线:Newman CLI 自动化运行 ​

在 Jenkins 或 GitHub Actions 流水线中,无需安装任何桌面客户端,直接通过 Node.js 驱动的 Newman 执行导出的 Collection:

bash
# 1. 全局安装 Newman 核心引擎及 HTML 高级报表插件
npm install -g newman newman-reporter-htmlextra

# 2. 自动化执行用例集并生成富文本测试报告
newman run /opt/tests/api_collection.json \
       -e /opt/tests/test_env.json \
       --reporters cli,htmlextra \
       --reporter-htmlextra-export /opt/tests/reports/api_report.html \
       --bail # 遇到严重错误时是否快速熔断

生成的 api_report.html 包含可视化请求明细、断言通过率及耗时分布,轻松实现接口自动化冒烟回归。

测试开发工程师 · 专注自动化与系统架构 | 邮箱: hansblog@atumsoul.win