局部变量仅在单个请求的Pre-request Script或Tests脚本内有效,不能通过{{variableName}}在URL或请求体中引用,也不跨请求、不持久化。

局部变量只能在单个请求的 Pre-request Script 或 Tests 脚本中设置和读取,不能跨请求、不能被 URL 或请求体直接引用({{xxx}} 不生效),这是最容易踩坑的地方。
局部变量只在脚本内有效,不能用于请求参数替换
Postman 的 {{variableName}} 语法只支持 environment、globals、collectionVariables 和 data 变量,**不支持 pm.variables 创建的局部变量**。也就是说:
- 你用
pm.variables.set("temp_id", "abc123")设置成功了,但{{temp_id}}在 URL 或 Header 里会原样显示,不会被替换 - 局部变量只对当前请求的脚本可见:Pre-request Script 设的,Tests 能读;Tests 设的,下个请求完全不知道
- 想让 token、订单号这类值参与后续请求,必须用
pm.environment.set()或pm.globals.set()
什么时候该用 pm.variables.set()
它适合纯脚本内部的临时计算或中间状态缓存,比如:
- 在 Tests 中解析响应,把多个字段拼成一个调试字符串:
pm.variables.set("debug_info", `${json.code}-${json.msg}`) - 做条件判断时暂存布尔结果:
pm.variables.set("is_valid", json.data?.status === "success") - 避免重复调用方法:
const body = pm.response.json(); pm.variables.set("raw_body", body);,后面都从变量取
pm.variables 和 pm.environment 混用的典型错误
常见误操作是:登录接口在 Tests 里用 pm.variables.set("token", json.token),然后在下一个请求 Header 写 Authorization: Bearer {{token}} —— 这必然失败。
正确做法是:
Postman Mac版是一款专为macOS设计的API开发与测试工具,凭借简洁的界面和强大的功能,深受开发者喜爱。它支持发送各种HTTP请求(GET、POST、PUT等),轻松管理接口集合、环境变量和模拟服务器。Mac用户可享受原生性能、快捷键优化及与系统无缝集成的体验,适用于接口调试、自动化测试和文档生成。无论是个人项目还是团队协作,Postman for Mac都能提升API开发效率,是ma
- 登录请求 Tests 中改用:
pm.environment.set("auth_token", json.token) - 后续请求 Header 写:
Authorization: Bearer {{auth_token}} - 如果这个 token 只在当前集合里用,也可以用
pm.collectionVariables.set("auth_token", json.token)
注意:环境变量需要提前在环境管理器里声明 key(哪怕值为空),否则 {{auth_token}} 会显示为字面量。
局部变量没有持久化,也不同步,关掉 Postman 就丢
pm.variables 是纯内存变量,不写入任何配置文件,也不随环境/集合导出。它的生命周期严格绑定于一次请求执行过程 —— 从 Pre-request Script 开始,到 Tests 结束就释放。
这意味着:
- 你在 Tests 里设了
pm.variables.set("retry_count", 3),刷新页面重跑,值就没了 - 用 Runner 批量运行时,每个请求都是独立上下文,A 请求设的变量,B 请求完全不可见
- CI/CD 中通过 Newman 执行时,
pm.variables同样无效,别指望靠它传参
真正需要跨请求、跨运行保留的值,只有 environment / globals / collectionVariables 这三类可选,选哪个取决于作用域需求。
















