需先创建并启用环境变量,再在登录接口tests中用pm.environment.set()提取token,后续请求通过{{token}}引用,最后在console验证是否成功替换。

如果您在使用Postman进行接口测试时,需要从登录接口响应中动态提取Token,并将其作为环境变量供后续多个接口调用,但无法正确设置或传递该值,则可能是由于变量作用域、提取时机或引用语法不匹配所致。以下是实现此目标的具体操作步骤:
一、创建并启用环境变量
Postman中的环境变量用于跨请求共享数据,必须先定义环境并启用,才能在请求中读写变量值。未启用的环境将导致变量赋值失败或读取为空。
1、点击右上角“眼睛”图标旁的下拉菜单,选择Manage Environments。
2、点击Add按钮,输入环境名称(如dev_env),在变量列表中添加一行:
键名填写token,值留空,点击Add。
3、返回主界面,在环境选择下拉框中选中刚创建的环境,确保其名称右侧显示Enabled状态。
二、在登录接口响应中提取Token并写入环境变量
需借助Tests标签页中的JavaScript代码,在响应返回后立即解析JSON体,定位Token字段,并通过pm.environment.set()写入环境变量,确保后续请求可实时读取。
1、选中登录接口请求(如POST /api/login),切换到Tests标签页。
2、输入以下代码(假设响应体为JSON格式且Token字段名为access_token):
const jsonData = pm.response.json();
pm.environment.set("token", jsonData.access_token);
3、若Token位于响应头中(如Authorization头的Bearer值),则改用:
const authHeader = pm.response.headers.get("Authorization");
if (authHeader) { pm.environment.set("token", authHeader.replace("Bearer ", "")); }
三、在后续接口中引用已提取的Token
变量写入后,可在任意请求的Headers、Params或Body中通过双大括号语法{{token}}引用,Postman会在发送前自动替换为当前环境变量值。
1、打开需认证的接口(如GET /api/user/profile),切换到Headers标签页。
2、新增一行键值对:
Key填写Authorization,Value填写Bearer {{token}}。
3、若接口要求将Token放入Query参数,可在Params中添加键为access_token、值为{{token}}的条目。
四、验证Token是否成功传递
通过查看请求实际发出的内容,确认变量是否被正确替换,避免因拼写错误、环境未启用或作用域错配导致引用失效。
1、在目标接口(如/profile)中,点击右上角Send and Download旁的...按钮,选择View Request in Console。
2、在Console窗口中检查Headers区域,确认Authorization: Bearer eyJhbGci...中已出现有效Token字符串而非原始{{token}}文本。
3、若仍显示变量名,检查环境是否启用、变量名大小写是否与pm.environment.set()中完全一致、且未在Tests脚本中误用pm.variables.set()(该方法仅用于全局变量)。
五、处理多级嵌套或非标准Token结构
当响应结构复杂(如嵌套在data.result.token)或Token需拼接处理(如添加前缀、截取子串)时,需增强JSON解析逻辑,避免因路径错误导致提取失败。
1、若响应格式为{"code":0,"data":{"result":{"token":"abc123"}}},则提取代码应为:
const data = pm.response.json();
if (data.data?.result?.token) { pm.environment.set("token", data.data.result.token); }
2、若需对Token进行Base64解码后再使用,可添加:
const decoded = atob(data.token.split(".")[1].replace(/-/g, "+").replace(/_/g, "/"));
pm.environment.set("decoded_payload", decoded);











