【APIfox做接口和自动化测试】


参考 APIfox帮助文档: 官方文档教程和常见问题整理的非常详细 👍👍👍

环境&参数

一个项目在不同的阶段会处于不同的环境,例如存在开发环境、测试环境、生产环境等,这些环境对应着不同的“前置 URL”与“接口参数值”。显而易见的是,当项目随着进度推进而环境发生变动时,频繁地修改接口地址中的前缀 URL 及反复配置参数对于接口调试工作而言十分繁琐。

环境管理

  1. 新建环境
    在这里插入图片描述
  2. 切换环境
    在这里插入图片描述

全局参数

实际项目中,往往要给接口请求额外加上参数,例如鉴权 token 等参数.以实训平台为例, 接口请求的header中要携带saas-slug ,cookie中要携带lqtoken , 我们可以将这两参数设置为全局参数,免去了每次接口请求时都要手动重复去填写
在这里插入图片描述

测试用例

  1. 保存一个接口测试用例 (apifox会自动将用例执行的环境和参数都保存下来)
    在这里插入图片描述
  2. 依次执行设计好的接口用例,重复第一步的保存用例的方法
    在这里插入图片描述
  3. 测试用例的增加,随之而来的问题也很明显
  • 用例太多,回归测试需要一个个点击运行
  • 接口之间有关联, 比如删除某个数据的接口必须依赖新建数据接口
  • 需要人为断言每一条用例是否符合预期结果

自此,我们还需要学习apifox其中一个非常强大的功能:🔥 自动化测试 🔥

自动化测试

场景模拟: 新增数据接口 —— 查询全部数据 —— 查询单条数据 —— 删除数据 为例,具体步骤如下

  1. 新建测试场景
    在这里插入图片描述
  2. 添加测试步骤
    在这里插入图片描述
  • 从接口导入:根据接口参数自动生成一个用例,其参数值为空,需要手动填写
  • 从接口用例导入(推荐):存在两种模式:“复制”和“绑定”。
    • 复制: 将接口用例以“复制”方式导入,接口用例里的参数也会一同复制过来,和原来用例数据相互独立,各自改动后互不影响。
    • 绑定: 会直接引用原来的用例,两边的改动都会相互实时同步。

此处选择从接口用例导入,具体如下
在这里插入图片描述
在这里插入图片描述

如何实现 B 接口的请求参数依赖于 A 接口返回的数据?

参数传递

使用后置脚本和变量(普通变量、环境变量或全局变量)的方式达到参数的传递效果.上述案例中, 删除接口携带的achievement_id, 需要从查询数据详情返回值里获取.因此我们可以这么做:

  1. 在获取数据的接口里,编写后置操作提取achievement_id
    在这里插入图片描述
  2. 删除接口参数值使用对应的变量,如"{{achievement_id}}"

在这里插入图片描述

断言

为每条用例设置断言

  1. 假设我们的预期结果是响应结果里 “code”:0
    在这里插入图片描述
  2. 如果每个用例都要引用共同的断言,可以准备个公共脚本
    在这里插入图片描述
    在这里插入图片描述

查看报告

  1. 运行场景用例
    在这里插入图片描述
  2. 查看报告
    在这里插入图片描述
### 使用Apifox实现接口自动化测试 #### 准备工作 为了能够顺利地使用Apifox进行接口自动化测试,需先完成Apifox的下载与安装[^1]。 #### 创建项目并导入API文档 进入Apifox平台后,在首页点击创建新项目按钮。输入项目的名称以及描述信息之后保存设置。接着可以通过手动录入的方式定义各个API请求路径及其参数;也可以直接上传已有的Swagger或Postman格式文件快速构建起完整的API文档结构体系[^2]。 #### 编写测试用例 针对每一个待测API端点编写具体的测试案例。这一步骤里要明确指定期望接收到的数据形式、状态码范围以及其他任何必要的验证条件。对于一些复杂的业务逻辑,则可能需要用到前置处理函数(Pre-request Script)来进行变量初始化操作或是模拟特定环境下的行为表现。 #### 组织成测试套件 当单个API级别的测试完成后,可以进一步把这些独立的小单元组合起来形成更大规模的整体流程——即所谓的“测试套件”。通过这种方式不仅便于管理维护众多关联紧密却又各自独立的功能模块之间的关系链路,而且有助于发现潜在的问题所在之处从而及时加以修正改进。 #### 执行自动化测试 利用内置的任务调度机制设定好触发时机(比如每次提交代码变更时自动运行),或者是即时启动一次性的全面扫描过程。在此期间,系统会依次调用所列明的各项服务资源直至整个序列结束为止,并记录下每一步的结果反馈情况供后续分析参考之用[^3]。 ```python import requests def test_api(): url = "http://example.com/api" headers = {"Content-Type": "application/json"} response = requests.get(url, headers=headers) assert response.status_code == 200 data = response.json() assert 'key' in data test_api() ``` 此段Python代码展示了简单的HTTP GET请求发送方式及响应体解析校验方法作为示例说明之一部分。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr. G K

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值