INITIAL VALUE填团队共享的占位符(如https://api-dev.example.com),CURRENT VALUE填个人调试的实际值(如真实token);改后需Save并右上角激活环境,敏感信息须设Secret且仅CURRENT VALUE可填真实值。

环境变量的 INITIAL VALUE 和 CURRENT VALUE 到底怎么填
Postman里所谓“默认值”,其实就藏在环境变量(或全局变量)编辑界面的 INITIAL VALUE 和 CURRENT VALUE 两个字段里。别被名字绕晕:INITIAL VALUE 是给团队成员看的共享默认值,CURRENT VALUE 才是你自己当前调试用的实际值。
常见错误是把敏感信息(比如 auth_token)直接写进 INITIAL VALUE —— 这会导致导出环境时泄露;也有人只填了 INITIAL VALUE 却忘了点右上角环境选择器激活它,结果请求里 {{base_url}} 一直不解析。
- 团队协作时,
INITIAL VALUE填通用占位符,比如https://api-dev.example.com或placeholder_token -
CURRENT VALUE填你本地能跑通的值,比如真实的开发环境地址或临时 token - 改完记得点
Save,且必须在右上角下拉菜单里选中该环境,变量才生效 - 如果想把当前所有
CURRENT VALUE推回INITIAL VALUE(比如整理完一套可用配置要同步给同事),点Persist All,但慎用——它会覆盖别人可能已修改的初始值
全局变量没生效?检查是否被环境变量覆盖了
Postman 的变量优先级是:局部变量 > 环境变量 > 全局变量 > 集合变量。这意味着哪怕你用 pm.globals.set("timeout_ms", 10000) 设置了全局超时,只要当前激活的环境里也定义了同名的 timeout_ms,请求里取到的永远是环境变量的值。
这种覆盖很隐蔽:你在 Tests 脚本里打印 pm.globals.get("timeout_ms") 看起来是对的,但实际发请求时 URL 或 header 里的 {{timeout_ms}} 却来自环境。这就是为什么有时候“明明设了全局变量,换环境后就不灵了”。
- 排查方法:点击右上角眼睛图标 → “Quick Look”,确认当前环境变量列表里有没有同名项
- 如果某个变量确实需要跨环境一致(比如公司统一的
api_version),就别在环境里重复定义,只靠全局变量 + 合理命名(如加前缀global_api_version)来规避冲突 - 脚本中读取时,明确用
pm.globals.get()或pm.environment.get(),别依赖pm.variables.get()—— 它按优先级自动查找,行为不可控
用 Pre-request Script 动态生成缺省值,比硬填更可靠
有些值不适合静态默认,比如每次请求都要带新时间戳、随机 UUID 或从上个响应提取的 token。这时候靠 INITIAL VALUE 填死值根本不管用,得用脚本动态赋值。
Postman 12.27.7 Windows x64 官方安装包,适用于 API 设计、调试、测试与协作。该系列包含 Enterprise 云端性能测试静态 IP 出口能力,以及接口规范标签管理改进,适合受限网络测试与规范资源组织场景。
典型场景:登录接口返回 access_token,后续所有请求都需带上它。如果手动复制粘贴到环境变量里,不仅麻烦,还容易过期失效。
- 在登录请求的
Tests里写:pm.environment.set("access_token", pm.response.json().access_token); - 在其他请求的
Pre-request Script里补缺省逻辑:if (!pm.environment.get("access_token")) { pm.environment.set("access_token", "dummy-token-for-dev"); } - 这样既保证有值可用,又不会因 token 过期导致整条链路中断;测试时还能快速切回 dummy 值绕过认证
- 注意:脚本里的
set()操作只影响CURRENT VALUE,不影响INITIAL VALUE,所以不会污染团队共享配置
Secret 类型变量不是摆设,敏感值必须开这个开关
Postman 把变量标为 Secret 不只是视觉隐藏——它会阻止该值出现在控制台日志、导出文件和部分 CI/CD 日志中。如果你把 api_key 或 password 写在普通变量里,哪怕只在本地调试,一不小心点错导出按钮,密钥就裸奔了。
很多人以为“反正我本地用,无所谓”,但实际踩坑常发生在:交接环境配置给新人、用 Newman 跑 CI 流水线、或者误点 Postman 的“Sync”同步功能。
- 创建变量时勾选
Secret复选框(在环境/全局变量编辑页) - Secret 变量无法通过
pm.environment.get()在控制台直接打印明文,但脚本中仍可正常使用,比如放进 header:pm.request.headers.add({key: "Authorization", value: "Bearer " + pm.environment.get("auth_token")}); - Secret 变量的
INITIAL VALUE字段会显示为••••••,此时你只能靠CURRENT VALUE填真实值,且不能用Persist All推送——这是设计上的安全限制
变量默认值真正的难点不在“怎么填”,而在“谁有权改、改了影响谁、改错会不会泄露”。越早按环境隔离+Secret 标记+脚本兜底这三步建好防线,后期协作和自动化就越少半夜救火。










