在 CentOS 上使用 Postman 处理响应数据的实用指南
一 查看与格式化响应
- 在 Postman 中发送请求后,于下方 Response 区域查看状态码、响应时间、响应头和响应体。
- 响应体为 JSON 时会自动格式化,可点击 Pretty 切换为美观排版,便于阅读与定位字段。
- 非 JSON 场景可直接查看原始文本;若为 HTML,可用正则等方式提取关键信息(见下文示例)。
二 在 Tests 脚本中解析与断言
- 基本解析与常见断言
- 解析 JSON:const data = pm.response.json();
- 状态码:pm.test(“Status is 200”, () => pm.response.to.have.status(200));
- 响应时间:pm.test(“Response < 200ms”, () => pm.expect(pm.response.responseTime).to.be.below(200));
- 字符串包含:pm.test(“Body contains keyword”, () => pm.expect(pm.response.text()).to.include(“keyword”));
- 精确字符串相等:pm.test(“Exact match”, () => pm.response.to.have.body(“expected string”));
- 旧式写法(兼容):tests[“Status code is 200”] = responseCode.code === 200;(建议优先使用 pm.test)。
- 结构化响应取值与类型安全
- 推荐先校验结构再取值,避免运行时错误:
- const r = pm.response.json();
- if (r && r.data && Array.isArray(r.data.users)) { … }
- 布尔值比较务必使用严格相等:if (user.isRetail === true) { … },避免与字符串 “true”/“false” 混淆。
- 变量提取与传递
- 环境变量:pm.environment.set(“token”, data.access_token);
- 全局变量:pm.globals.set(“token”, data.access_token);
- 在后续请求中使用 {{token}} 引用。
- 动态请求串联
- 根据前一个接口返回的列表发起后续请求并断言:
- pm.sendRequest(r[0].url, (err, res) => {
const u = res.json();
pm.test(‘has email’, () => pm.expect(u.email).to.exist);
});
- 响应类型适配
- 纯文本:const txt = pm.response.text();
- XML 转 JSON:const obj = xml2Json(responseBody);(便于后续取值与断言)。
三 典型场景示例
- 登录后提取并保存 token
- 请求登录接口,Tests 中:
- const r = pm.response.json();
- pm.environment.set(“access_token”, r.access_token);
- 其他请求在 Headers 中使用:Authorization: Bearer {{access_token}}。
- 从 HTML 中提取 csrf-token
- Tests 中:
- const html = pm.response.text();
- const m = html.match(/name=“csrf-token” content=“([^”]+)"/);
- if (m) pm.globals.set(“csrf_token”, m[1]);。
- 遍历数组并按条件保存 ID
- 假设结构为 { data: { users: […] } }
- const r = pm.response.json();
- if (r?.data?.users?.length) {
r.data.users.forEach(u => {
if (u.isRetail === true) pm.globals.set(“UserId”, u.id);
else if (u.isRetail === false) pm.globals.set(“orgUserId”, u.id);
});
}
- 响应时间阈值校验
- pm.test(“Response time OK”, () => pm.expect(pm.response.responseTime).to.be.below(300));
- 集合批量运行与持续回归
- 使用 Runner 批量运行 Collection,统一查看 Test Results 报告,适合回归与性能基线校验。
四 排错与最佳实践
- 优先使用 pm.test/pm.expect 编写可读、可维护的断言;旧式 tests[] 仅作兼容。
- 访问嵌套字段前务必做结构校验(如 r?.data?.items),避免“Cannot read property … of undefined”。
- 布尔判断用 === true/false,不要用字符串比较;提取文本或 HTML 时注意编码与转义。
- 需要跨请求共享数据时,合理使用 环境变量(按环境隔离)与 全局变量(全局唯一),并在请求参数、Header、Body 中用 {{变量名}} 引用。