集合变量在Postman中右键集合→Edit→Variables标签页设置,仅对当前集合及子文件夹生效;使用{{key}}引用,通过pm.collectionVariables.set()/get()在脚本中操作。

集合变量在哪设置:右键 Edit → Variables 标签页
集合变量只对当前集合及其子文件夹里的所有请求生效,不是全局或环境级的。设置入口很直接:在左侧 Collections 列表中,右键目标集合 → 选择 Edit → 切换到 Variables 标签页。这里能填三列:Name(变量名)、Initial Value(初始值)、Current Value(当前值)。初始值用于版本控制或重置参考,Current Value 才是实际被读取的值。
常见错误现象:变量设好了但请求里 {{xxx}} 不替换,大概率是没保存、没选中该集合、或者当前环境/全局变量同名覆盖了它(Postman 变量优先级:局部 > 数据 > 环境 > 集合 > 全局)。
怎么在请求里引用集合变量:用 {{key}},不是 $ 或 %
在 URL、Headers、Params、Body(raw/json/form-data)任意位置,直接写 {{变量名}} 即可。比如集合变量 base_url 值为 https://api.example.com,URL 就写成 {{base_url}}/v1/users。注意:{{}} 是唯一合法语法,$variable 或 %variable% 都不会解析。
使用场景举例:
- 把重复的 API 版本号(如
v2)抽成api_version,所有请求统一改一处 - 注册流程中多个接口共用
test_user和test_password,避免硬编码泄露 - 集合内所有请求都走同一套 mock 地址,用
mock_host统一管理
脚本中读写集合变量:用 pm.collectionVariables
Pre-request Script 或 Tests 里动态操作集合变量,必须用 pm.collectionVariables.set() 和 pm.collectionVariables.get()。不能用 pm.environment 或 pm.globals 替代,否则写进去的值不会在集合范围内生效。
Postman 12.27.7 Windows x64 官方安装包,适用于 API 设计、调试、测试与协作。该系列包含 Enterprise 云端性能测试静态 IP 出口能力,以及接口规范标签管理改进,适合受限网络测试与规范资源组织场景。
典型用法:
- 从上一个请求响应里提取 ID,存为集合变量供后续请求复用:
pm.collectionVariables.set("user_id", jsonData.id) - 在 Tests 中校验集合变量是否被正确赋值:
pm.test("user_id exists", () => pm.expect(pm.collectionVariables.get("user_id")).to.exist) - 注意:集合变量不跨集合,即使两个集合同名变量,值也完全隔离
集合变量和环境变量混用时容易踩的坑
当集合变量和环境变量同名(比如都叫 host),Postman 会按作用域优先级取值:环境变量优先于集合变量。也就是说,即使你设置了集合变量 host,只要当前选了某个环境且该环境也定义了 host,请求里 {{host}} 就会取环境变量的值。
这在调试时特别容易误判——你以为改的是集合变量,其实被环境变量“屏蔽”了。解决办法只有两个:
- 检查右上角环境选择器是否为
No Environment,临时关闭环境变量干扰 - 给变量加命名前缀,比如集合变量用
coll_base_url,环境变量用env_base_url,彻底避免冲突
真正麻烦的不是设不了变量,而是变量被静默覆盖后,请求发到了错误的地址却查不出原因。

















