Postman四种变量需按作用域显式读取:局部变量用pm.variables.get(),数据变量用pm.iterationData.get(),环境变量用pm.environment.get(),全局变量用pm.globals.get();混用或未定义、环境未选、大小写错、执行顺序误用均导致undefined。

Postman 脚本里读取变量,直接用 pm.variables.get("key"),别用 pm.environment.get("key") 混淆作用域——环境变量、全局变量、数据变量、局部变量,读法不同,写错就返回 undefined。
怎么区分四种变量并正确读取
Postman 变量分四层,优先级从高到低:局部变量 > 数据变量(pm.iterationData)> 环境变量 > 全局变量。脚本中不加前缀的 pm.variables.get() 会按此顺序查找,但容易掩盖真实来源,建议显式调用对应 API:
- 环境变量:
pm.environment.get("token")(仅限当前选中的环境) - 全局变量:
pm.globals.get("base_url") - 数据变量(CSV/JSON 文件导入的每行数据):
pm.iterationData.get("user_id")(只在 Collection Runner 或 Monitor 中有效) - 局部变量(脚本内临时设的):
pm.variables.set("temp_id", "123")后,用pm.variables.get("temp_id")读取
为什么 pm.variables.get() 有时返回 undefined
常见原因不是语法错,而是变量根本没定义或作用域不匹配:
- 环境没选对——检查右上角下拉菜单是否激活了含该变量的环境
- 拼写大小写不一致,比如设的是
Auth_Token,却读auth_token - 在 Pre-request Script 里读了一个只在 Tests 里才 set 的变量(执行顺序是 Pre-request → Request → Tests)
- 用
pm.environment.get()读全局变量,或反过来,结果必然undefined
在 Tests 脚本里动态提取并复用变量
典型场景:登录接口返回 token,后续请求要带它。不能硬编码,得提取+存+读:
Postman Mac版是一款专为macOS设计的API开发与测试工具,凭借简洁的界面和强大的功能,深受开发者喜爱。它支持发送各种HTTP请求(GET、POST、PUT等),轻松管理接口集合、环境变量和模拟服务器。Mac用户可享受原生性能、快捷键优化及与系统无缝集成的体验,适用于接口调试、自动化测试和文档生成。无论是个人项目还是团队协作,Postman for Mac都能提升API开发效率,是ma
const res = pm.response.json();
pm.environment.set("auth_token", res.token); // 存到环境变量
// 后续请求的 Authorization Header 就可填:Bearer {{auth_token}}
如果想在同一个请求的 Tests 里立刻读刚设的值,必须用 pm.environment.get(),而不是 pm.variables.get() ——因为 set() 写入的是环境作用域,variables.get() 不会跨域回查。
变量名带空格、短横线或中文?别这么干。Postman 对变量名只支持字母、数字、下划线,其它字符会导致 get() 静默失败,连报错都没有。










