Postman 操作速查表 - API 调试工具常用操作大全
一条 curl 只能证明"这一次没报错",证明不了鉴权边界、也覆盖不了不同环境下的响应差异。Postman 把请求变成可感知环境、可写脚本的工作流。本表覆盖请求构建、环境/全局变量、pm.test 断言、前置脚本与动态数据,以及整集合运行和 Mock 服务。接口数量一多、需要反复回归 dev/staging/prod 时最合适。读完能把零散接口验证升级成可重复的自动化断言套件。
请求构建 7
GET {{base_url}}/api/usersPOST {{base_url}}/api/usersPUT {{base_url}}/api/users/1DELETE {{base_url}}/api/users/1Headers: Content-Type: application/jsonBody → raw → JSONAuthorization: Bearer {{token}}环境变量 6
{{base_url}}pm.environment.set("token", "xxx")pm.environment.get("token")pm.environment.unset("token")pm.globals.set("key", "value")pm.variables.get("key")测试脚本 6
pm.test("Status is 200", () => { pm.response.to.have.status(200) })pm.expect(pm.response.json().name).to.eql("Alice")pm.response.to.be.jsonpm.response.to.have.header("Content-Type")pm.expect(pm.response.responseTime).to.be.below(500)const json = pm.response.json()前置脚本 4
pm.request.headers.add({key: "X-Token", value: "xxx"})pm.request.body.update("new body")const timestamp = Date.now(); pm.environment.set("ts", timestamp)pm.request.url.addQueryParams({page: 1})集合与运行 7
Collection RunnerNew RunnerSet Data File (CSV/JSON)Delay: 1000msIterations: 10Export CollectionImport from cURL / OpenAPIMock 与文档 5
Mock ServerExample ResponsesDocumentationPublish DocumentationMonitor命令示例
分层断言:状态码、字段与响应时间
pm.test("Status is 200", () => { pm.response.to.have.status(200) })
pm.response.to.be.json
pm.expect(pm.response.json().name).to.eql("Alice")
pm.expect(pm.response.responseTime).to.be.below(500)第一条确认通道,第二条确认响应可解析,后两条确认契约与性能。响应时间断言能抓出「功能没坏但变慢了」的退化,这是状态码断言看不到的。
前置脚本注入动态值,再在测试里使用
const timestamp = Date.now(); pm.environment.set("ts", timestamp)
pm.request.headers.add({key: "X-Token", value: "xxx"})
pm.request.url.addQueryParams({page: 1})三条都在请求发出前生效:写环境变量、加请求头、追加查询参数。加请求头适合调用方标识这类需要动态生成的值,比在界面上手填更可控。
请求构建:变量化地址与方法
GET {{base_url}}/api/users
POST {{base_url}}/api/users
PUT {{base_url}}/api/users/1
DELETE {{base_url}}/api/users/1把主机部分抽成 base_url 是环境切换的前提:同一份集合在 dev、staging、prod 上都靠改这一个值切换,请求本身一个字都不用动。
数据驱动:CSV 行数决定迭代的实际次数
Set Data File (CSV/JSON)
Iterations: 10
Delay: 1000ms数据驱动模式下实际次数取「迭代数」与「数据行数」中较小的一个,多余的行不会跑完。Delay 不是可选的保险:创建、更新、删除这类有先后依赖的请求,间隔不够就会读到上一步尚未生效的状态。
常见坑与注意事项
- pm.globals.set 写入的值所有环境共享,容易把某个环境的地址或凭证泄漏到别的环境,敏感值一律放 Environment 并排除出版本库。
- 前置脚本里的请求体改写发生在发送前,若同时在界面 Body 里填了内容,两者以脚本结果为准,容易造成「明明填了却没发出去」的困惑。
- Delay 设成 0 时有依赖的请求会随机失败,间歇性红灯比确定性失败更难排查;有状态流转的集合必须留间隔。
- Mock Server 的响应是按你保存的示例返回的,后端真实返回结构变动时若不同步更新示例,前端会在错误契约上继续开发。
- Bearer token 之类凭据写死在请求里会随 Export Collection 一起导出并进入版本库,改用环境变量注入。
提示
- 环境变量分 Environment(当前环境)和 Global(全局),敏感信息用 Environment。
- Collection Runner 配合 CSV 数据文件可以做数据驱动测试。
- Mock Server 适合前端并行开发,后端接口未完成时先用 Mock。
常见问题
环境变量和全局变量该怎么分配?
按「作用范围 + 敏感度」分。当前环境专属的地址、凭证放 Environment,因为切换 dev/staging/prod 时它们整体替换,其它环境不受影响;跨环境都需要的东西放 Global,比如格式约定或与后端无关的默认超时。敏感信息一律只放 Environment 并把它排除出版本库。读取时优先用 pm.variables.get,它会按优先级在环境与全局之间查找,简化判断;写入侧则用 pm.environment.set 或 pm.globals.set 明确指定去向。
一条断言该怎么写才有价值?
断言要能区分「接口坏了」和「业务数据变了」。只断言状态码 200 几乎没价值——返回空对象也是 200。有效的做法是分层:先断言状态码确认通道正常,再用 pm.expect(pm.response.json().name).to.eql("Alice") 这类字段断言确认契约没变,加一个响应时间断言捕捉性能退化。字段断言要选业务上稳定的字段(如 id 类型、状态字段取值),别选随时会变的展示内容。
前置脚本和测试脚本分别在什么时候跑?
按请求的生命周期:前置脚本在请求发出之前运行,用来准备动态内容——生成时间戳、写请求头、改请求体、加查询参数;测试脚本在响应返回之后运行,用来读响应做断言。所以同一个变量若由前置脚本产出,就只能在测试脚本里用,反之不成立。链式流程里靠这个顺序传递 token 或唯一键,是登录后自动带鉴权的常见做法。
怎么用一份集合跑出可重复的回归?
核心是把断言写进集合、而不是靠人眼看响应。用 Collection Runner 批量运行,再配合 Set Data File 提供 CSV/JSON 数据驱动,把同一组断言套在不同输入上跑。Iterations 控制重复次数、Delay 控制请求间隔——有依赖关系的流程需要留出间隔,否则前一请求写入的数据后一个请求还没读到。导出集合(Export Collection)后既能作为文档发布,也能让团队复用同一套断言。
后端接口还没写完,前端怎么并行开工?
用 Mock Server 配合 Example Responses。先按接口契约定义好每个请求的方法、路径和响应结构,保存为示例响应,再让 Mock Server 按这套定义对外提供接口,前端照常联调。契约先行还有个附带好处:等后端真正实现时,双方对字段名和类型的理解是一致的,减少后期返工。示例响应要按真实的成功、鉴权失败、参数错误几种情况分别保存,这样前端也能拿到异常态的页面。
由 巧匠 维护
公开更新于 2026年7月21日,内容持续校对官方文档。