我在用Postman集合测试接口时,给集合绑定了环境变量,但在循环发送请求时发现变量值没被替换,直接显示成{{var_name}}。比如我设置了baseURL变量,但请求地址还是原样。
尝试过在集合设置里确认环境已正确加载,也检查了变量名拼写。甚至在单个请求里用同样的变量能正常替换,但用集合运行时就失效了,这是什么情况?
附上请求体里用到的变量示例:
.url {{baseURL}}/api/data
.method POST
.headers Content-Type: application/json
你需要确认一个关键点:你在哪里定义的 baseURL?
如果是在 Environment 的变量表里定义的,那运行时必须先在 Collection Runner 的下拉菜单里选中对应的环境,而且环境变量要放在 Global 下面那个层级才能被正确读取。
但更可能的情况是:你设置的是环境变量,但运行时没选环境,或者选了环境但变量没放在正确的位置。
还有个坑很多人没注意到——如果你用的是 Collection 级别的变量(不是在 Environment 里定义的),那必须在 Collection 的 Variables 标签页里先声明这个变量,光在请求里写 {{baseURL}} 是不够的,运行时它找不到这个变量的定义。
解决办法很简单:
打开你的 Collection 设置,点 Variables 标签页,在 Initial Value 那一列把 baseURL 填进去,值写你的域名。然后运行时确保选中了对应的 Environment。
如果你已经是在 Environment 里定义的变量,那就在 Collection Runner 右上角的下拉菜单确认一下选的是哪个环境,有时候不小心选成 No Environment 或者另一个环境就会这样。
还有个容易忽略的点:变量名大小写敏感,baseURL 和 BaseURL 是两个不同的变量,看看你请求里的写法和你定义的是不是完全一致。
https://{{baseURL}}/api/data,有时缺少协议会导致替换失败。如果还是不行,直接用 在预请求脚本里强制设置一次。
实在懒得折腾,就直接硬编码地址吧,反正电脑又不会累。