共计 1852 个字符,预计需要花费 5 分钟才能阅读完成。
背景痛点
在接口自动化测试过程中,手动管理 Token 会带来诸多问题:

- 重复劳动:每个测试用例都需要单独添加 Token,当测试用例数量增多时,工作量呈指数级增长。
- 环境切换易错:在不同环境(如开发、测试、生产)之间切换时,容易忘记更换对应的 Token,导致测试失败。
- 团队协作不一致:团队成员各自维护自己的 Token,缺乏统一管理,容易造成测试结果不一致。
技术方案
环境变量配置
- 打开 Apifox,进入项目设置。
- 选择 ” 环境管理 ”,点击 ” 添加环境 ”,例如命名为 ”Dev 环境 ”。
- 在环境变量中添加
token变量,并设置对应的值。 - 保存设置后,该变量可在所有接口请求中引用。
Pre-request Script 编写规范
在接口的 Pre-request Script 中,我们可以自动注入 Token。以下是完整的 ES6 代码示例:
/**
* 自动设置 Token 到请求头
* @param {Object} request - 请求对象
* @param {Object} environment - 环境变量
*/
function setTokenHeader(request, environment) {
// 获取环境变量中的 token
const token = environment.token;
// 打印调试信息
console.log(` 当前使用的 Token: ${token}`);
// 设置请求头
if (token) {request.headers['Authorization'] = `Bearer ${token}`;
console.log('Token 已成功添加到请求头');
} else {console.warn('未找到 Token 环境变量,请检查配置');
}
}
// 调用函数
setTokenHeader(pm.request, pm.environment);
团队共享库的权限控制
- 在 Apifox 中创建团队项目。
- 设置团队成员的角色和权限。
- 对于敏感的环境变量如 Token,建议设置为 ” 仅管理员可修改 ”。
- 团队成员可以共享接口定义和测试用例,但关键配置保持受控。
避坑指南
- 变量作用域混淆:
- 确保环境变量在正确的环境中设置
-
区分全局变量和环境变量的使用场景
-
脚本语法错误:
- 使用 ES6 语法时注意浏览器兼容性
-
确保所有变量都已正确定义
-
Token 泄露风险:
- 不要将真实 Token 提交到版本控制系统
- 使用环境变量而非硬编码方式存储 Token
进阶技巧
结合 CI/CD 实现 Token 动态获取
对于 OAuth2.0 认证,可以在 Pre-request Script 中动态获取 Token:
/**
* 动态获取 OAuth2.0 Token
* @returns {Promise<string>} access_token
*/
async function getOAuthToken() {
const response = await pm.sendRequest({
url: 'https://oauth.example.com/token',
method: 'POST',
header: {'Content-Type': 'application/x-www-form-urlencoded'},
body: {
mode: 'urlencoded',
urlencoded: [{key: 'grant_type', value: 'client_credentials'},
{key: 'client_id', value: pm.environment.get('client_id')},
{key: 'client_secret', value: pm.environment.get('client_secret')}
]
}
});
const data = response.json();
return data.access_token;
}
// 使用动态获取的 Token
const token = await getOAuthToken();
pm.environment.set('token', token);
最佳实践
- 环境隔离:为不同环境(开发、测试、生产)设置独立的 Token。
- 定期轮换:设置 Token 过期时间,并定期更新。
- 日志记录:在脚本中添加足够的日志输出,便于调试。
- 版本控制:将接口定义和测试用例纳入版本控制,但敏感信息除外。
总结
通过 Apifox 的全局参数和 Pre-request Script 功能,我们可以轻松实现 Token 的自动化管理,大幅提高测试效率。这种方法不仅减少了重复劳动,还确保了团队协作的一致性。
最后抛出一个思考题:如何解决 Token 过期自动刷新?欢迎在评论区分享你的解决方案。
正文完
