Ubuntu上Postman脚本编写技巧
一 环境与脚本基础
二 Pre-request与Tests常用写法
const token = pm.environment.get("token");
pm.request.headers.add({ key: "Authorization", value: "Bearer " + token });
const userId = pm.collectionVariables.get("userId");
pm.request.url.query.add({ key: "userId", value: userId });
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.eql(pm.collectionVariables.get("userId")));
pm.test("Response has expected field", () => pm.expect(json).to.have.property("name"));
pm.environment.set("token", "abc123");
pm.globals.set("base_url", "https://api.example.com");
console.log(pm.variables.toObject());
pm.sendRequest("https://postman-echo.com/get", (err, res) => {
if (err) { console.error(err); return; }
pm.test("Echo status is 200", () => pm.expect(res.code).to.equal(200));
// 将结果写入变量供后续请求使用
pm.environment.set("echoId", res.json().args.id);
});
const tpl = `<h3>{{res.name}}</h3><p>{{res.email}}</p>`;
pm.visualizer.set(tpl, { res: pm.response.json() });
// 成功后跳转
postman.setNextRequest("GetUserDetail");
// 失败短路
// postman.setNextRequest(null);
三 调试与排错
四 自动化与CI集成
# 安装
npm install -g newman
# 运行并指定环境、生成HTML报告
newman run collection.json -e environment.json -r cli,html
name: API Tests
on: [push, pull_request]
jobs:
api-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with: { node-version: "18" }
- run: npm i -g newman
- run: newman run collection.json -e environment.json --reporters cli,html
五 实践建议与易错点