接口测试:实操问题一:如何自送获取token并实现关联。不想每次复制Cookie,可以试试token自动关联:Postman如何提取token,实现关联(包括解决参数加密的问题)
Postman实现获取token并自动关联到环境变量中
背景原因
- 每次使用接口时,都需要手动复制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");

浙公网安备 33010602011771号