温馨提示×

Postman在Ubuntu上如何进行自定义脚本编写

小樊
44
2025-12-04 09:34:31
栏目: 智能运维

在Ubuntu上编写 Postman 自定义脚本

一 环境与脚本类型

  • Ubuntu 上可使用 Snap 安装 Postman:sudo snap install postman;或下载 Linux 64 版本解压到 /opt 并创建软链:sudo ln -s /opt/Postman/Postman /usr/local/bin/postman。脚本基于 JavaScript,核心对象是 pm
  • 脚本类型与作用:
    • Pre-request Script:在请求发送前执行,常用于动态设置 Headers/Query、生成 Token、读取 环境变量
    • Tests:在收到响应后执行,用于断言 状态码/响应头/响应体、校验 响应时间、设置变量供后续请求使用。
  • 常用变量作用域:Environment(环境级)、Global(全局级)、Collection Variables(集合级)、Data(数据文件,用于数据驱动)。

二 编写与调试步骤

  • 创建或打开请求,在右侧选择 Pre-request ScriptTests 页签,输入脚本并保存。
  • 发送请求后,在响应区域的 Test Results 查看断言结果;通过 View → Show Postman Console(快捷键:Ctrl+Alt+C) 查看 console.log 输出与请求/响应详情,便于定位问题。
  • 批量运行与持续集成:使用 Collection Runner 执行整个集合的脚本;在 CI/CD 中配合 Newman 命令行运行集合与环境,实现无人值守测试。

三 常用脚本示例

  • 预请求脚本:动态 Authorization 头与查询参数
// Pre-request Script
const token = pm.environment.get("token");
if (token) {
  pm.request.headers.add({ key: "Authorization", value: "Bearer " + token });
}

const userId = pm.collectionVariables.get("userId");
if (userId) {
  const q = pm.request.url.query;
  q.add({ key: "userId", value: userId });
}
  • 测试脚本:状态码、响应时间、JSON 字段与变量回写
// Tests
pm.test("Status code is 200", () => pm.response.to.have.status(200));
pm.test("Response time < 200ms", () => pm.expect(pm.response.responseTime).to.be.below(200));

const json = pm.response.json();
pm.test("User ID present", () => pm.expect(json.id).to.be.a("number"));

// 将响应中的 token 写回环境,供后续请求使用
const newToken = json.token;
if (newToken) {
  pm.environment.set("token", newToken);
}
  • 数据驱动:从数据文件读取参数
// Pre-request Script
const uid = pm.iterationData.get("userId"); // 来自数据文件
pm.request.url.query.add({ key: "userId", value: uid });
  • 异步前置调用:在发送主请求前先获取动态值
// Pre-request Script
const url = "https://api.example.com/config";
pm.sendRequest({ url, method: "GET" }, (err, res) => {
  if (err) return console.error("Pre-request failed:", err);
  const cfg = res.json();
  pm.environment.set("traceId", cfg.traceId || "default");
});
  • 运行命令示例(Newman)
# 导出集合与环境为 JSON 后
newman run collection.json --environment environment.json

上述示例覆盖了变量读写、请求修改、断言、日志与异步预请求等常见场景。

四 最佳实践与排错

  • 作用域与命名:优先使用 Environment/Collection 变量,避免滥用 Global;变量命名统一(如 token、baseUrl),并在环境描述中注明用途。
  • 脚本职责单一:每个脚本只做一件事(如“取 token”或“校验字段”),便于维护与复用。
  • 稳定性优先:避免在 Pre-request 中执行耗时很长的外部调用;必要时增加 超时/容错结果缓存
  • 持续集成:将集合与环境纳入版本控制,使用 NewmanCI 中定时或提交触发执行,并收集报告。
  • 排错流程:先查看 Test Results 定位失败的 pm.test;再用 Postman Console(Ctrl+Alt+C) 检查 console.log 与请求细节;必要时在 Collection Runner 逐步执行以复现问题。

0