Postman自动提取Token教程:告别手动复制,提升接口测试效率
1、说明
在接口测试过程中,Token鉴权是最常见的身份验证方式之一。很多新手在使用Postman测试接口时,都会遇到一个繁琐的问题:每次获取Token后,需要手动复制粘贴到后续需要鉴权的请求中,不仅耗时,还容易出现复制错误、漏复制的情况,严重影响测试效率。
今天就给大家分享一个Postman实用技巧——通过Tests脚本自动提取请求返回的Token,并赋值给变量,后续接口直接引用变量即可,彻底告别手动复制粘贴,让接口测试更高效、更流畅。
示例

// 1. 解析响应的 JSON 数据
const responseData = pm.response.json();
// 2. 提取 access_token 并做安全校验
if (responseData && responseData.access_token) {
// 将 access_token 存入环境变量(推荐)
pm.environment.set("x-amz-access-token", responseData.access_token);
}
1、前置准备:创建环境变量(推荐,更规范)
在开始提取Token之前,建议先创建一个环境变量,用于存储提取到的Token。环境变量的优势在于可以实现多环境切换(如开发环境、测试环境、生产环境),后续更换环境时,无需修改脚本,只需切换环境即可。
- 打开Postman,点击右上角的「眼睛图标」(Environment Quick Look),在弹出的面板中点击「Add」,创建一个新的环境。
- 给环境命名(如「Dev-开发环境」「Test-测试环境」),在「Variables」列表中,添加两个变量:
access_token和refresh_token,初始值留空即可(后续由脚本自动赋值)。 - 创建完成后,在右上角的环境下拉框中,选中刚刚创建的环境,确保后续脚本操作针对该环境生效。
如果只是临时使用,也可以不创建环境变量,直接使用全局变量,但更推荐使用环境变量,便于管理和维护。
2、核心操作:编写Token提取脚本(适配你的响应结构)
重点来了!根据你提供的Token响应JSON结构,我已经编写好了适配的提取脚本,无需修改,直接复制粘贴即可使用。先来看下你的响应结构:
{
"access_token": "Atza|IwEBIJX8-RgjyXu7GIZy2fBvagd0T0xqHinrWi8W29U7IkVpu29ghL8VxSJc1LNe4zkJ8XpB8qHEN1jZ-NXKwi8XufWINvgBc-pb4KzewWKqXLspKnE8iKs2ssXczdpBb4x_w0Vhplpuk5p35NK3X-TEczJLlMUnSO9i_9jugjo4CPTAICiz2rJrV0YzMa8C8gIz_U9HgmAmNNVEd1HpD7IuAPN9ELJw2b5EBS2oeL5exbeiVFrb5mdzPOTvQ1rRxphO19VqV4IaGK_8BJjvZwYRfg45unWU92fAfZ81vH3F-D-81aM-QnnJlauZoAL3R1roJeKC9M0fG7VMcdPIo2Gr-B7O",
"refresh_token": "Atzr|IwEBIFmDW8zJEe6CHxUvJpam8XwfpkD-C5bN-tTPXleiwTNvXCVLW6-GwX2taNYE7MIjtd46LzzdSIT3gDfExTWCMNDYFeqNY3V3NIn7Et1H79n34RrF20K_ICE-jSEquLnlaolRapOk8QmT7ZjRmRy1yfRzFSAxsV-5JecNpAyaAGsTBga5Liml0Z9VTaikNCYwuJS5DPtGxZWwduf4XtoZdHuwkMfrlJOmkuaYNWD5RQTFMzECJM6HbDpCGPtuLFKuSNSvjRWwemr0NGHEHOHd0sv8qkLY3jjB93J_50_H5y03xbZapvb45RICxmYcXWrwP48",
"token_type": "bearer",
"expires_in": 3600
}
响应中包含 access_token(访问令牌)和 refresh_token(刷新令牌),脚本将同时提取这两个值,并自动存入环境变量。
脚本编写步骤:
- 打开你用于获取Token的请求(如登录请求),切换到「Tests」标签页(Tests标签用于编写响应后执行的脚本)。
- 清空Tests标签页中的原有内容,复制下面的完整脚本,粘贴进去即可。
3、完整提取脚本(可直接复制使用)
// 1. 解析请求返回的JSON响应数据
const responseData = pm.response.json();
// 2. 提取access_token和refresh_token,并做安全校验(避免响应异常导致赋值失败)
if (responseData && responseData.access_token) {
// 将access_token存入环境变量(核心操作)
pm.environment.set("access_token", responseData.access_token);
// 可选:同时提取refresh_token存入环境变量(后续刷新Token时可用)
if (responseData.refresh_token) {
pm.environment.set("refresh_token", responseData.refresh_token);
}
// 控制台打印日志,方便调试(可在Postman左下角🔍查看控制台)
console.log("✅ Token提取成功!");
console.log("access_token已存入环境变量:", responseData.access_token);
if (responseData.refresh_token) {
console.log("refresh_token已存入环境变量:", responseData.refresh_token);
}
} else {
// 提取失败时给出明确提示,便于排查问题
console.error("❌ Token提取失败!请检查响应结构是否正确。");
console.error("当前响应数据:", responseData);
// 可选:添加测试断言,让请求结果直接显示失败(便于快速发现问题)
pm.test("提取access_token失败", () => {
pm.expect(responseData.access_token).to.not.be.undefined;
});
}
4、脚本说明:为什么这么写?
很多新手可能会疑惑,为什么脚本要加这么多判断?其实这是为了提升脚本的稳健性,避免因响应异常(如接口报错、返回结构变化)导致脚本执行失败,具体说明如下:
pm.response.json():用于解析响应的JSON数据,将其转为JavaScript对象,方便提取字段。if (responseData && responseData.access_token):判断响应数据是否存在,且包含access_token字段,避免因接口返回错误(如404、500)导致脚本报错。pm.environment.set("access_token", responseData.access_token):将提取到的access_token赋值给环境变量,后续可通过{{access_token}}引用。- 控制台日志:便于调试,若提取失败,可通过左下角控制台查看具体原因(如响应结构错误、Token字段缺失)。
- 测试断言:可选配置,若提取失败,请求结果会显示「Failed」,直观提醒我们排查问题,无需手动查看控制台。
5、后续使用:如何引用提取的Token?
脚本执行成功后,access_token 已经自动存入环境变量,后续需要鉴权的接口,直接引用该变量即可,无需再手动复制粘贴。
最常见的引用场景(Bearer Token鉴权):
- 打开需要鉴权的请求,切换到「Headers」标签页。
- 添加一条Header:
- Key:
Authorization(大多数接口的鉴权Header键名,若接口有特殊要求,按接口文档修改) - Value:
Bearer {{access_token}}(注意「Bearer」后面有一个空格,{{access_token}}是引用环境变量的语法)
- Key:
- 发送请求,Postman会自动将
{{access_token}}替换为环境变量中存储的Token,接口即可正常通过鉴权。
如果接口的Token引用方式不同(如放在Params或Body中),直接在对应位置写入{{access_token}}即可,用法一致。
6、避坑指南:新手常犯的3个错误
- 忘记选中环境:脚本是将Token存入环境变量的,若未选中创建的环境,脚本会执行失败,或Token存入错误的环境中。
- 响应结构匹配错误:如果后续接口返回的Token字段名变化(如从
access_token改为token),需要修改脚本中的responseData.access_token,否则无法提取。 - Bearer后面漏加空格:很多新手会忽略「Bearer」后面的空格,导致接口鉴权失败,记住Value的格式是「Bearer + 空格 + {{access_token}}」。
6、进阶技巧:自动刷新Token(可选)
你的响应中包含expires_in: 3600,说明Token的有效期是3600秒(1小时),过期后需要重新获取。如果测试时间较长,可设置自动刷新Token,无需手动点击登录请求。
实现方式:在需要鉴权的接口集合中,添加「Pre-request Script」(请求前执行的脚本),脚本会在每次发送请求前,检查Token是否过期,若过期则自动发送登录请求获取新Token,具体脚本如下(可根据你的登录接口修改):
// 检查环境变量中的access_token是否存在,若不存在或过期,自动刷新
const accessToken = pm.environment.get("access_token");
if (!accessToken) {
// 发送登录请求,获取新Token
pm.sendRequest({
url: "你的登录接口地址", // 替换为你的实际登录接口
method: "POST",
header: { "Content-Type": "application/json" },
body: {
mode: "raw",
raw: JSON.stringify({
username: "你的登录账号",
password: "你的登录密码"
})
}
}, (err, res) => {
if (err) {
console.error("❌ 自动刷新Token失败:", err);
return;
}
const data = res.json();
// 将新的Token存入环境变量
pm.environment.set("access_token", data.access_token);
pm.environment.set("refresh_token", data.refresh_token);
console.log("✅ Token自动刷新成功!");
});
}
7、总结
通过Postman的Tests脚本自动提取Token,看似是一个小技巧,却能极大提升接口测试的效率,尤其适合需要频繁测试多个鉴权接口的场景。本文的脚本已经完全适配你的响应结构,直接复制粘贴即可使用,新手也能快速上手。
掌握这个技巧后,你再也不用手动复制粘贴Token,把更多时间花在接口逻辑测试上,提升工作效率的同时,也能减少人为错误。如果你的接口响应结构有变化,或者有其他Postman使用问题,欢迎在评论区留言交流~

浙公网安备 33010602011771号