Ubuntu上Postman的脚本编写技巧有哪些
导读:Ubuntu上Postman脚本编写技巧 一 环境与脚本基础 在Ubuntu上可通过多种方式安装与启动Postman(如Snap:sudo snap install postman;或下载Linux 64位包解压至**/opt并创建桌面启...
Ubuntu上Postman脚本编写技巧
一 环境与脚本基础
- 在Ubuntu上可通过多种方式安装与启动Postman(如Snap:sudo snap install postman;或下载Linux 64位包解压至**/opt并创建桌面启动器),安装完成后即可在界面中编写脚本。脚本分为两类:在请求发送前执行的Pre-request Script**,与在收到响应后执行的Tests。Postman脚本运行在沙盒化的JavaScript环境中,支持常用语法(如if/else、for/while、try/catch、JSON、Date、正则),并提供pm对象用于操作变量、发送请求与断言;内置Chai断言库(如pm.expect)。注意沙盒不支持DOM/浏览器API与Node.js部分特性,且脚本为同步执行,不支持async/await。常用变量作用域优先级为:本地变量 > 迭代数据变量 > 环境变量 > 集合变量 > 全局变量。
二 Pre-request与Tests常用写法
- 动态设置请求头与参数(Pre-request)
- 从环境读取token并注入Authorization头:
const token = pm.environment.get("token"); pm.request.headers.add({ key: "Authorization", value: "Bearer " + token } ); - 动态追加查询参数(示例取集合变量userId):
const userId = pm.collectionVariables.get("userId"); pm.request.url.query.add({ key: "userId", value: userId } );
- 从环境读取token并注入Authorization头:
- 响应断言与性能阈值(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)); - JSON字段与内容校验:
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()); - 在URL/Header/Body中使用**{ { 变量名} } 占位符,脚本中通过pm.variables.replaceIn进行替换;对象/数组请JSON.stringify后存储,读取时再JSON.parse**。
- 作用域读写与批量查看:
- 在Tests中发起请求(回调风格)
- 常用于获取动态令牌或前置数据:
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); } );
- 常用于获取动态令牌或前置数据:
- 可视化展示
- 使用pm.visualizer.set渲染响应数据:
const tpl = `< h3> { { res.name} } < /h3> < p> { { res.email} } < /p> `; pm.visualizer.set(tpl, { res: pm.response.json() } );
- 使用pm.visualizer.set渲染响应数据:
- 工作流控制
- 通过postman.setNextRequest串联请求或结束流程(按请求名或ID):
// 成功后跳转 postman.setNextRequest("GetUserDetail"); // 失败短路 // postman.setNextRequest(null);
- 通过postman.setNextRequest串联请求或结束流程(按请求名或ID):
- 动态变量
- 在脚本中使用诸如**{ { $guid} } 、{ { $timestamp} } 、{ { $randomInt} } **等动态变量生成测试数据。
三 调试与排错
- 使用Postman Console(View → Console)查看console.log输出与错误堆栈;在脚本中合理打印关键变量与分支走向。
- 采用try-catch-finally保护解析与业务逻辑,必要时使用**pm.test.error()**显式标记失败,避免静默通过。
- 利用内置的**代码片段(Code Snippets)**快速插入常用断言与请求片段,减少手写错误。
- 理解脚本执行顺序:集合前置脚本 → 文件夹前置脚本 → 请求前置脚本 → 集合测试 → 文件夹测试 → 请求测试,据此排查变量未生效或作用域覆盖问题。
四 自动化与CI集成
- 使用Newman在命令行批量运行集合与环境,并生成报告:
# 安装 npm install -g newman # 运行并指定环境、生成HTML报告 newman run collection.json -e environment.json -r cli,html - 在GitHub Actions等CI中执行:
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 - 建议将集合与环境纳入版本控制,配合**数据文件(CSV/JSON)**做数据驱动测试,提升覆盖率与可维护性。
五 实践建议与易错点
- 保持脚本幂等:避免在Tests中修改会影响后续请求的全局/环境变量,必要时使用本地变量或复制副本。
- 统一命名规范与作用域:明确变量放在环境、集合还是本地,减少覆盖与歧义。
- 处理异步与超时:Tests中发起的请求使用回调;涉及延时请在回调内完成断言,避免依赖setTimeout的竞态。
- 处理非JSON响应:先判断Content-Type,再选择pm.response.text()/json(),避免解析异常。
- 管理敏感信息:优先使用环境/集合变量与Secrets管理,不要将token/密钥硬编码在脚本中。
- 报告与可追溯:在CI中启用HTML/JSON报告并归档,便于回溯失败用例与请求链路。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu上Postman的脚本编写技巧有哪些
本文地址: https://pptw.com/jishu/766181.html
