项目背景
由于生产环境和开发环境数据量差异较大,所以需要在开发环境模拟线上数据量然后进行相关导出操作。如果手动造单效率十分低下,查阅相关文档后发现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。