登录态(Auth)如何处理

接口签名处理

项目背景

由于生产环境和开发环境数据量差异较大,所以需要在开发环境模拟线上数据量然后进行相关导出操作。如果手动造单效率十分低下,查阅相关文档后发现apifox支持自动化测试。

解决方案

配置

全局变量

  • AUTH_TOKEN
  • ACCESS_TOKEN_EXPIRES

全局参数

参数名 value
Authorization Bearer {{AUTH_TOKEN}}
  • apifox会默认读取全局变量AUTH_TOKEN

脚本

自动登录

function sendLoginRequest() {
   	//相关请求参数准备...
    
    const loginRequest = {
        url: url,
        method: "POST",
        header: {
            "Content-Type": "application/json;charset=UTF-8",
       		//...
        },
        body: {
            mode: "raw",
            raw: JSON.stringify({ username: 'admin', password: 'admin' })
        }

    };

    console.log(loginRequest);
    pm.sendRequest(loginRequest, function (err, res) {
        if (err) {
            console.log(err)
        } else {
            const jsonData = res.json();
            console.log(jsonData);
            pm.environment.set("AUTH_TOKEN", jsonData.data.access_token)

            var currentTime = Date.parse(new Date()) / 1000;
            console.log(currentTime);
            var expire = currentTime + jsonData.data.expires_in;
            console.log(expire);
            pm.environment.set("ACCESS_TOKEN_EXPIRES", expire)
        }
    })
}

const accessToken = pm.environment.get("AUTH_TOKEN");
const accessTokenExpires = pm.environment.get("ACCESS_TOKEN_EXPIRES");

//当token过期会重新获取token
if (!accessToken || (accessTokenExpires && accessTokenExpires <= (Date.parse(new Date()) / 1000))) {
    sendLoginRequest();
}

需将该脚本配置为公共脚本

官方文档有详细的步骤说明–登录态(Auth)如何处理

接口签名处理–接口签名处理

前置操作

需在前置操作加入该公共脚本
记得要在测试用例的前置操作加入脚本
在这里插入图片描述

结果

设置好相关线程数,循环次数之后就可以实现自动化测试功能。批量生成大量测试数据,并且当token过期后会自动更新token

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐