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

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

代码示例

请求逻辑

// 登录url
const loginUrl = 'xxx/login';
// 校验短信验证码获取token
const 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);

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值