Postman变量需严格遵循{{key}}格式且区分作用域与优先级。优先级为局部>环境>集合>全局,变量名大小写敏感,值须手动脚本提取设置,环境切换后需验证变量是否真实生效。

Postman 里变量不是“加个花括号就能用”,而是有明确作用域和优先级的。用错地方,{{base_url}} 会直接变成字面量字符串,请求发不出去;变量值没设对,切换环境后所有接口全 404。
变量引用写法必须是 {{key}},不能少空格、不能用引号
Postman 只识别严格格式 {{variable_name}},中间两个大括号、无空格、无引号。常见错误包括:
-
"{{base_url}}"或'{{base_url}}'—— 引号会让 Postman 当成普通字符串,不解析 -
{{ base_url }}—— 空格导致解析失败,显示为未定义 -
{{BASE_URL}}—— 变量名大小写敏感,BASE_URL和base_url是两个变量 - 在 URL 栏里写了
{{host}}/api/login,但没启用任何环境(显示No Environment)且没设全局变量 —— 此时{{host}}为空,请求地址变成/api/login
环境变量、集合变量、全局变量的优先级顺序必须清楚
当同名变量在多个层级存在时,Postman 按固定顺序覆盖:局部变量 > 环境变量 > 集合变量 > 全局变量。这不是可配置项,是硬编码行为。
- 局部变量只存在于单次请求的
Pre-request Script或Tests中,用pm.variables.set()设置,仅当前运行生效 - 环境变量只在你右上角选中的那个环境(如
test)下有效;切换到prod后,test里的token就不可见 - 集合变量只对该集合内所有请求生效,即使你切换了环境,它也不受环境变量影响 —— 适合放模块级常量,比如
{{api_version}} = v2 - 全局变量始终可用,但一旦滥用(比如把 token 放全局),就无法按环境隔离,测试时容易误调生产接口
变量值不能直接从响应体自动填入,得靠脚本提取并设置
Postman 不会自动把登录返回的 access_token 塞进变量,必须手动写脚本提取并存入环境或全局变量。
Postman 12.27.7 Windows x64 官方安装包,适用于 API 设计、调试、测试与协作。该系列包含 Enterprise 云端性能测试静态 IP 出口能力,以及接口规范标签管理改进,适合受限网络测试与规范资源组织场景。
- 在登录请求的
Tests里写:const jsonData = pm.response.json(); pm.environment.set("auth_token", jsonData.token); - 如果响应是
{"data": {"token": "abc123"}},就得写jsonData.data.token,否则取不到 - 别在
Pre-request Script里用pm.environment.get("auth_token")读取,却忘了前面登录请求根本没运行过 —— 此时值为undefined,拼出的 Authorization 头就是Bearer undefined - 用
console.log()调试时,输出在 Postman 控制台(View → Show Postman Console),不是浏览器控制台
切换环境后要检查变量是否真被加载,别信下拉菜单显示
右上角选了 staging,不代表变量就生效了 —— 常见失效原因:
- 环境没保存:点
Add新建后,忘记点右下角Save,变量实际没存进去 - 变量名拼错:环境里设的是
baseurl,请求里写的是{{base_url}},二者不匹配 - 环境被禁用:环境编辑页里某变量右侧开关是关着的(灰色),该变量不会参与解析
- 变量值为空字符串:看起来有值,但其实是
"",URL 拼出来就是https:///login,直接报 DNS 错误 - 最稳妥验证方式:点右上角眼睛图标 → 查看当前生效的环境变量列表,确认
key和value都存在且非空
变量配置真正麻烦的从来不是“怎么加”,而是“什么时候读、从哪读、读到了没”。尤其在多环境 + 接口依赖(如登录→获取 token→调业务接口)场景下,一个变量没链上,整条流程就断在第一步。










