如何自动化处理Newman+Postman测试中的动态Bearer Token授权?
解决Newman自动化测试中动态Bearer Token的授权问题
我之前也碰到过一模一样的问题,其实只要结合Postman的环境变量和脚本能力,再配合Newman就能轻松搞定动态Token的自动化授权流程,具体操作步骤如下:
1. 在Postman中配置Token获取请求
首先得有一个专门用来获取授权Token的请求(比如命名为获取Auth Token),这个请求就是你平时用来登录或者获取Bearer Token的接口:
- 发送请求后,在该请求的Tests标签页中添加脚本,把返回的Token存入环境变量:
// 这里要根据你实际的接口返回结构调整,假设返回JSON里的access_token就是我们要的Token const responseData = pm.response.json(); pm.environment.set("bearerToken", responseData.access_token);
这段脚本会自动把接口返回的Token提取出来,存入名为bearerToken的环境变量中。
2. 给其他测试请求绑定动态Token
接下来,把所有需要Bearer授权的请求都配置成引用这个环境变量:
- 打开目标请求的Authorization标签页,授权类型选择
Bearer Token; - 在Token输入框中填入
{{bearerToken}},这样Postman(以及Newman)运行时会自动替换成刚才存入的动态Token值。
3. 导出Postman集合与环境文件
要让Newman能运行你的测试,需要导出两个关键文件:
- 导出你的测试集合(Collection)为JSON文件,比如命名为
api-test-collection.json; - 导出对应的环境(Environment)为JSON文件,比如
test-env.json(环境里可以预先配置API地址、用户名密码这类固定变量,Token初始值可以留空)。
4. 使用Newman执行自动化测试
最后在终端里运行Newman命令,指定你的集合和环境文件即可:
newman run api-test-collection.json -e test-env.json
Newman会按照集合里的请求顺序执行,先跑Token获取请求,把Token存入环境变量,后续的测试请求就会自动使用这个动态生成的Token完成授权了。
额外注意事项
- 如果Token有过期时间,可以在Token获取请求的Tests脚本里添加过期时间判断,或者在集合的Pre-request Script里实现Token自动刷新逻辑;
- 要是授权接口需要用户名、密码这类参数,建议也把它们存到环境变量里(比如
{{test-username}}、{{test-password}}),这样切换测试环境时只需要修改环境文件就行,不用改请求本身; - 如果需要生成测试报告,可以给Newman命令加上报告参数,比如
--reporters html --reporter-html-export report.html,就能生成直观的HTML测试报告。
内容的提问来源于stack exchange,提问作者Zed
相关产品推荐
相关产品推荐

