接口测试:实操问题一:如何自送获取token并实现关联。不想每次复制Cookie,可以试试token自动关联:Postman如何提取token,实现关联(包括解决参数加密的问题)

Postman实现获取token并自动关联到环境变量中

 

背景原因

 

  1. 每次使用接口时,都需要手动复制Cookie,很麻烦,想实现执行定时任务或直接执行登录接口来获取token,并实现关联

实现方法:在登录接口的断言中,获取接口的响应体中的token,并把token设置为环境变量

 

1、在登录接口中,用JavaScript实现获取请求的响应体,并把响应体中的token设置为环境变量

(1)在Tests中输入以下脚本

// 把响应体存入变量 Data中
var Data = JSON.parse(responseBody);
//获取Data中的token,并存入postman的环境变量中
pm.environment.set("user_token",Data.data.token);

(2)环境变量中查看,token是否添加成功

 

2、设置集合的请求头的前置脚本

//打印获取到的token值
pm.test(pm.environment.get("user_token"));
//设置变量
var user_token = pm.environment.get("user_token")
//把token加入到请求头中,该集合下所有的请求在请求前都在Header中设置user_token
pm.request.addHeader("user_token:"+user_token)

 

3、执行集合下的接口

 4、注意事项

(1)设置集合请求头的时候得注意

我第一次是直接在Authorization中设置为Type为“API Key” ,Key:Authorization ,Value:Bearer{{user_token}},但是运行结合下的接口还是提示请登录系统。

然后删除了Authorization中的设置,直接加的前置条件(就是设置集合的请求头),然后运行没毛病了。

感觉Authorization  和 设置前置条件只能二选一,不然会有报错(个人理解,暂时没找参考文档,后续研究一下下为啥。。。。。。

①和②只能设置一个,不然执行不成功,我设置的②

(2)参数加密

有的项目,登录接口中的密码是加密的,得先获取公匙,在前置脚本中执行加密的脚本,把执行完加密的 登录密码也设置为环境变量,登录接口才能正常使用;

 加密的脚本得找各自的开发人员获取;

一通操作,最开始以为只要获取到token就行,结果发现之前可能是有缓存还是什么来着,登录接口直接复制的接口中的参数,也登录成功了,下次请求登录接口发现不好使了,才发现密码加密之后每次都不一样,要想每次都登录成功,那就得写前置脚本,找开发要加密的脚本,好在最后实现了!!!!

不同的的登录接口,看下接口的传参需要什么参数就获取什么!

登录的接口传参中需要验证码、checkKey 、密码(加密的)、用户名......

那就先调用接口把响应中的checkKey和publicKey先存入变量中,再根据密码调用加密脚本,生成能使用的登录密码

 

 

 (3)登录接口中不需要user_token,移除登录接口的token,防止过期的接口被过滤器解析,影响登录接口

前置脚本中

pm.request.headers.remove("user_token");

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2024-09-07 16:36  羊羊的测试之路  阅读(146)  评论(0)    收藏  举报