apifox自动化测试使用-循环调用接口

登录态(Auth)如何处理

接口签名处理

项目背景

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

解决方案

配置

全局变量

  • AUTH_TOKEN
  • ACCESS_TOKEN_EXPIRES

全局参数

参数名value
AuthorizationBearer {{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

### 如何在Apifox中创建和使用自动化测试脚本 #### 创建前置脚本 为了增强接口自动化的功能,在发送请求之前可以设置一些操作来准备必要的条件。这些操作可以通过编写JavaScript代码完成,比如修改请求参数、读取环境变量等。 ```javascript pm.environment.set('userId', '12345'); let currentTime = new Date().toISOString(); pm.variables.set('timestamp', currentTime); ``` 上述代码展示了如何利用`pm.environment.set()`方法设置环境变量[^2],以及通过`pm.variables.set()`设定临时变量用于后续请求中的动态替换。 #### 编写后置脚本 当接收到API响应之后,可能需要验证返回的数据是否满足预期或者提取某些特定的信息保存起来供其他地方调用。这同样借助于JavaScript实现: ```javascript // 断言状态码为200 OK pm.test("Status code is 200", function () { pm.response.to.have.status(200); }); // 提取JSON响应体内的字段并存储到全局变量里 const responseJson = pm.response.json(); pm.globals.set('token', responseJson.data.token); ``` 此段代码说明了怎样运用`pm.test()`来进行简单的HTTP状态码校验,并且介绍了获取JSON格式回应内容的方式——即先解析成对象再访问属性;最后还示范了把得到的结果存入全局作用域下的指定名称处以便重复利用[^3]。 #### 运行自动化测试套件 一旦完成了单个接口级别的前后处理逻辑定义以后,就可以考虑构建完整的测试流程了。通常情况下会涉及到多个关联性的服务端点组合在一起形成业务场景模拟。此时应该按照实际需求规划好顺序关系并将它们加入同一个集合内统一管理。 - 将各个独立的测试案例拖拽进来排列好先后次序; - 设置循环次数(如果适用)、延时间隔以及其他高级选项; - 开始执行整个批次的任务观察最终报告统计情况。 综上所述,Apifox不仅支持灵活定制化程度高的预/后处理器机制,而且也具备良好的用户体验界面方便开发者快速搭建起高效的持续集成体系结构。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值