Postman的环境变量主要用于在不同环境(如开发、测试、生产)之间快速切换接口域名、账号密码、Token 等配置,避免每次手动修改请求。
一、创建环境添加静态变量
打开环境管理界面
Postman主界面左侧边栏有一个Environments区域,如果没看到,可能折叠在Collections下方。点击旁边的加号或Environments标题右侧的图标,选择Create Environment即可新建一个环境。
给环境命名并添加变量
在弹出的编辑窗口中,为环境起一个有意义的名字。
然后在变量表格里逐行输入:
Variable(变量名):只能包含字母、数字、下划线,建议全大写加下划线,如 BASE_URL、USERNAME。
Initial Value(初始值):分享给别人时的默认值。
Current Value(当前值):自己使用的实际值,仅在本地生效,不会同步到团队共享中。
如添加一个变量BASE_URL,初始值填 http://dev.zmtests.com,当前值也填同样的地址。
点击Save保存环境。
管理多个环境
可以按相同方式创建开发环境、测试环境、生产环境等,每个环境里都包含相同名字的变量(如 BASE_URL),但 Current Value 对应不同的地址。
二、在请求中使用环境变量
变量定义好后,在任何请求的 URL、请求头(Headers)、请求体(Body)中都可以通过双花括号语法引用。
URL 示例
原本写死的地址是 http://dev.zmtests.com/api/login,现在把域名部分替换为 {{BASE_URL}}/api/login。Postman 会自动将 {{BASE_URL}} 分析成当前选中环境里该变量的 Current Value。
请求头示例
如果接口需要Token鉴权可在环境里添加TOKEN变量,然后在请求的 Headers 中添加一条:
Key: Authorization
Value: Bearer {{TOKEN}}
这样切换环境或刷新Token时只需修改环境变量值,所有用到这个Header的请求都会自动更新。
请求体示例
对于 JSON 格式的 Body,也可以嵌入变量,比如:
json
{
"username": "{{USERNAME}}",
"password": "{{PASSWORD}}"
}
引用变量时变量不存在或拼写错误,Postman会红色显示提示。
三、切换生效环境
界面右上角有一个环境选择下拉菜单(默认显示“No Environment”),点击它就可以切换到你创建的任何环境。选中后,所有请求中的 {{变量名}} 就会使用该环境的 Current Value。
切换环境的操作会立即影响当前打开的所有请求和集合运行结果,所以调试不同服务器时非常方便。
四、用脚本动态设置变量
很多场景下变量不能事先写死,比如登录成功后获取的Token或者需要根据响应动态提取的 ID。这时可以借助 Postman 的预请求脚本或测试脚本来写入环境变量。
常用的脚本方法:
pm.environment.set("变量名", 值):将某个值写入当前环境变量。如果环境变量不存在会自动创建;仅影响当前环境。
pm.environment.get("变量名"):读取当前环境变量。
pm.environment.unset("变量名"):删除当前环境变量。
实战例子:登录后自动设置 Token
在一个登录请求的 Tests 标签页中写:
javascript
// 分析响应 JSON
var jsonData = pm.response.json();
// 假设返回体中有 token 字段
if (jsonData.token) {
pm.environment.set("TOKEN", jsonData.token);
}
这样,只要执行这个登录请求并成功返回,环境变量 TOKEN 就会被自动更新。后续所有引用 {{TOKEN}} 的请求就都无需手动改动了。
场景:提取返回数据中的ID给下一个接口用
比如创建订单后返回了订单号,可在该请求的 Tests 中写:
javascript
var jsonData = pm.response.json();
pm.environment.set("ORDER_ID", jsonData.order_id);
下一个查看订单详情的请求 URL 就可以写成 {{BASE_URL}}/orders/{{ORDER_ID}}。
五、全局变量和环境变量的区别
Postman还支持全局变量(Global Variables),不归属于某个环境,在任何环境下都生效。可以通过 pm.globals.set/get/unset 操作。
设置位置:点击右上角齿轮图标 - Manage Environments - 底部Globals。
建议:
环境变量存放和具体环境强相关的信息,如域名、数据库连接等。
全局变量存放跨环境通用的信息,比如测试人员姓名、一些不会因环境而变的常量,但注意不要存放敏感数据(因为全局变量在切换环境时同样可见)。
变量的优先级:
临时变量(Only Me) -环境变量 - 集合变量 - 全局变量。
如果一个名称同时存是多个层级,Postman 会优先使用最内层、最临时的那个值。用得最多的就是环境变量。
六、环境变量的导入导出和分享
导出:在Environments列表中,点击环境旁边的三个点菜单,选择Export,会生成一个 JSON 文件。文件只包含变量名和 Initial Value,不会包含 Current Value(保证密码、Token 不被泄漏)。
导入:同样在环境列表上方点击Import,选择对应的JSON文件即可。
团队共享:在 Postman 团队工作区中,可以将环境分享给团队成员,他们导入后需要自行填写Current Value(比如自己的测试账号密码),而变量结构和Initial Value一目了然。
七、常见问题
变量显示红色,没有替换:检查变量名拼写是不是和环境中的完全一致,检查是不是选对了环境(右上角是不是选中了包含该变量的环境)。
Current Value 和 Initial Value 的困惑:Initial Value是共享给队友看的默认值,如果你希望保密某值(如生产密码),Initial Value可留空,只在Current Value里填入真实值,这样分享环境时别人看不到密码。
脚本里设置变量但未生效:保证脚本写在 Tests 或 Pre-request Script 中,且请求确实被执行成功。可以手动发送一次登录请求,然后去环境变量列表里看 TOKEN 的 Current Value 是不是已更新。
环境变量太多,快速查看:点击右上角眼睛图标,可以快速浏览当前环境所有变量及其 Current Value,也可以直接在那里修改。