0


postman使用之Pre-request Script预先获取参数设置为此次请求的参数

问题出现

在工作中遇到一个降低我工作效率的问题:
在自测A端接口时,需要获取token,我们公司管理端登录获取token的逻辑如下:

  1. 调用登录接口
  2. 输入短信验证码,获取token 最恼人的是账号是单点登录的,总会发生被挤掉的情况,之前我选择的方法就是手动执行前两个请求获取到token后手动输入,再进行测试,被挤掉后,又要重新获取,过于繁琐

解决方案

目前想到可以使用Pre-request Script脚本来自动获取token并放到当前请求的参数中,做到一次请求自动重新获取token,我的目的就是保证我的请求可以顺利执行
先搞清楚请求执行顺序

  1. Pre-request Script
  2. Request
  3. Response
  4. Tests

书写脚本位置即为此处
在这里插入图片描述

代码示例

请求逻辑

// 登录urlconst loginUrl ='xxx/login';// 校验短信验证码获取tokenconst tokenUrl ='xxx/checkLoginSms';const queryParameters ={userName:'username',password:'password'};// 登录接口需要的参数是query,按规则拼接到url后const urlWithQueryParameters =`${loginUrl}?${Object.keys(queryParameters).map(key=>`${encodeURIComponent(key)}=${encodeURIComponent(queryParameters[key])}`).join('&')}`;const loginRequestData ={url: urlWithQueryParameters,method:'POST',};

pm.sendRequest(loginRequestData,function(err, response){if(err){
        console.error(err);return;}

    console.log(response.json());if(response.json().returnStatus !="SUCCEED"){
        console.log("登陆失败请重试");return;}});// 第二个请求的为body参数const getTokenRequestData ={url: tokenUrl,method:'POST',header:{'Content-Type':'application/json'},body:"{ \"authCode\": \"authCode\", \"userName\": \"username\" }"};
pm.sendRequest(getTokenRequestData,function(err, response){if(err){
        console.error(err);return;}

    console.log(response.json());if(response.json().returnStatus =="SUCCEED"){// 如果请求成功需要传递参数到当前请求中去
        pm.environment.set('token',response.json().data);}});

参数传递

在这里插入图片描述
那么脚本中获取到的token如何传递呢,或者说在当前请求中如何引用到脚本中的变量
介绍postman各种变量的文章

这里我使用了environment环境变量,将获取到的token设置到environment中去

pm.environment.set('token',response.json().data);

另一边,引用时使用如下方式即可
在这里插入图片描述
如此就可以保证我自测接口的时候不会被挤掉了

标签: postman 测试工具

本文转载自: https://blog.csdn.net/NightFa1l/article/details/132662282
版权归原作者 好似只有轻佻语 所有, 如有侵权,请联系我们删除。

“postman使用之Pre-request Script预先获取参数设置为此次请求的参数”的评论:

还没有评论