需求背景工作中很多接口自测时 , 需要拿到登录后token放到请求头header中 , 才可以进行自测 。有没有好方法搞一次 , 可以任意自测?
实现目标接口自测时 , 支持多账号切换 , 同时也支持原来方式(复制粘贴token)
解决思路和实现方案解决思路:测试接口之前 , 要是能自动先调下登录接口 , 拿到token保存到某个位置 , 然后测试时把token自动追加到header中 , 是不是就可以了?
实现方案: collection级别 Pre-request Script + environment 。
重要的事情说三遍:collection级别!collection级别!collection级别! , 不是接口级别的 。
具体操作:
- 在环境environment中配置当前环境的请求HOST , 账号(account) , 密码(password)和 自动登陆标识(isAutoLogin) , environment支持配置多个同名的key , 也就是说你可以配置多个account和password , 惊不惊喜!如图所示:
文章插图
environment配置
- collection级别Pre-request Script 脚本 , 这个脚本执行时机是每次请求之前都会执行它 , 即每次都会调登录接口进行登录 , isAutoLogin为1时 , 会把token保存到environment中 , 后面的请求可直接从environment中获取 , 拷贝时需注意:loginurl和body.raw , 具体脚本如下:
const loginurl = pm.environment.get('HOST') + "/login";const account = pm.environment.get('account');const password = pm.environment.get('password');const echoPostRequest = { // url: pm.globals.get('url'),url: loginurl,method: 'POST',header: 'Content-Type:Application/json',body: {mode: 'raw',raw: JSON.stringify({"version": "1.3.2","versionCode": 1003002,"data": {"prefix":"86","phone": account,"password": password}})}};const isAutoLogin = pm.environment.get('isAutoLogin');if(isAutoLogin == 1) {pm.sendRequest(echoPostRequest, function (err, res) {console.log(err ? err : res.json());var jsonData = https://www.isolves.com/it/cxkf/jiagou/2021-05-14/res.json();pm.environment.set('token',jsonData.data.token);pm.request.headers.remove("token");pm.request.headers.add(jsonData.data.token,"token");console.log("header-" + pm.request.headers);});}
- isAutoLogin改成0后 , 就可以和原来一样了 , 复制粘贴token 。
鄙人煎熬了好几天 , 翻阅了Postman的各种文档 , 终于找到解决办法了 , 分享出来 , 希望能够帮助到和我有着同样问题的道友们 。我会分享工作中遇到的各种疑难杂症 , 不要错过 , 欢迎关注!
【Postman接口自测,有了这个脚本,以后不用复制粘贴token】
推荐阅读
- 阿里开源的限流神器 Sentinel,轻松搞定接口限流
- SpringBoot事件监听:应用监听接口的使用
- 软件测试开发实战|接口自动化测试框架开发
- 音响背后的接口你都了解吗?换个口可能不只听个响!
- 电视后面那排接口,你认得几个?
- Spring Boot 中如何统一 API 接口响应格式?
- 玩转Java8 lambda表达式&函数式接口一
- SpringBoot+Mysql做登陆接口,抛弃mapper.xml
- 电脑里这些不常用的接口你都知道啥功能吗?
- 3.5mm耳机接口会被淘汰吗-耳机3.5mm接口断了-