Postman 高级 API 测试工作流

Nina Santos | 2026-09-01T08:58:41 | DevOps

深入 Postman 的集合运行器、环境变量链、Pre-request Script、Test 断言、Mock Server 及 Newman CLI 自动化。

# Postman 高级 API 测试工作流 ## 环境变量管理 ```javascript // 创建多层级环境变量 // Global > Environment > Collection > Request { "baseUrl": "https://api.example.com", "authToken": "", "userId": "", "lastOrderId": "" } ``` ## Pre-request Script ```javascript // 自动登录获取 Token if (!pm.environment.get("authToken") || isTokenExpired()) { pm.sendRequest({ url: pm.environment.get("baseUrl") + "/auth/login", method: "POST", header: { "Content-Type": "application/json" }, body: { mode: "raw", raw: JSON.stringify({ username: pm.environment.get("testUser"), password: pm.environment.get("testPassword") }) } }, function (err, res) { if (!err && res.code === 200) { var data = res.json() pm.environment.set("authToken", data.token) pm.environment.set("tokenExpiry", Date.now() + 3600000) } }) } function isTokenExpired() { var expiry = pm.environment.get("tokenExpiry") return !expiry || Date.now() > parseInt(expiry) } ``` ## Test 断言 ```javascript // 基础断言 pm.test("Status code is 200", function () { pm.response.to.have.status(200) }) pm.test("Response has required fields", function () { var json = pm.response.json() pm.expect(json).to.have.property("data") pm.expect(json.data).to.be.an("array") pm.expect(json.data.length).to.be.above(0) // 验证数据结构 json.data.forEach(function (item) { pm.expect(item).to.have.all.keys("id", "name", "email", "createdAt") pm.expect(item.email).to.match(/^[^@]+@[^@]+\.[^@]+$/) }) }) // 性能断言 pm.test("Response time is under 500ms", function () { pm.expect(pm.response.responseTime).to.be.below(500) }) // 链式变量传递 pm.test("Save created resource ID", function () { var json = pm.response.json() pm.environment.set("lastOrderId", json.data.id) }) ``` ## Newman CLI 自动化 ```bash # 安装 npm install -g newman newman-reporter-htmlextra # 运行集合 newman run collection.json \ -e environment.json \ --reporters cli,htmlextra \ --reporter-htmlextra-export report.html \ --iteration-count 3 \ --delay-request 100 # CI/CD 集成 newman run collection.json \ -e production.json \ --bail \ --reporters junit \ --reporter-junit-export results.xml ``` ## Mock Server ```javascript // 在 Postman 中创建 Mock Server // 定义 Example Response // GET /api/users/1 { "data": { "id": 1, "name": "John Doe", "email": "john@example.com" } } // Mock URL: https://xxxxx.mock.pstmn.io/api/users/1 ``` Postman 的 Collection Runner 支持数据驱动测试,配合 CSV/JSON 数据文件可以批量执行参数化测试用例。

← Back to Blog