接口测试利器——APIFox的调研报告

先说结论

强烈推荐:

1.目前最好用的接口测试工具,集API 文档编写、API 调试、API Mock、API 自动化测试与一体

2.如果不考虑接口的私密性,直接使用免费版(共用化部署)即可。

3.如果考虑接口的私密性,需要购买私有化部署license,价格不贵!

APIfox

Apifox 是 API 文档、API 调试、API Mock、API 自动化测试一体化协作平台,定位 Postman + Swagger + Mock + JMeter。通过一套系统、一份数据,解决多个系统之间的数据同步问题。只要定义好 API 文档,API 调试、API 数据 Mock、API 自动化测试就可以直接使用,无需再次定义;API 文档和 API 开发调试使用同一个工具,API 调试完成后即可保证和 API 文档定义完全一致。高效、及时、准确!

下载

https://www.apifox.cn/

建议使用桌面版(支持windows、macos和linux。下载后默认安装即可),目前web版是Beta版本,部分功能不能实现

 

Apifox的主要UI

 

核心功能

 

更多特性

 

最佳实践

  1. 前端(或后端):在 Apifox 上定好接口文档初稿。
  2. 前后端:一起评审、完善接口文档,定好接口用例。
  3. 前端:使用系统根据接口文档自动生成的 Mock 数据进入开发,无需手写 mock 规则。
  4. 后端:使用接口用例调试开发中的接口,只要所有接口用例调试通过,接口就开发完成了。在开发过中接口有变化,调试的时候就自动更新了文档,零成本地保障了接口维护的及时性。
  5. 后端:每次调试完一个功能就保存为一个接口用例。
  6. 测试人员:直接使用接口用例测试接口。
  7. 所有接口开发完成后,测试人员(也可以是后端)使用集合测试功能进行多接口集成测试,完整测试整个接口调用流程。
  8. 前后端 都开发完,前端从Mock 数据切换到正式数据,联调通常都会非常顺利,因为前后端双方都完全遵守了接口定义的规范。

核心功能

接口文档设计

请求

响应

接口用例

一个接口多个用例,自动跟随接口变更

接口调试

Postman 有的功能 Apifox 基本都有

 

自动化测试测试报告

首先导入测试用例,然后运行测试用例,可以设置并发线程数,执行次数以及间隔停顿

 

使用感受

优点

1.接口文档只需要一次创建编辑就可以完成接口文档编写人员、开发人员、测试人员之间的信息共享,后续接口变更不会影响测试脚本!

2.有效地整合了工具(使用foxapi一个工具实现一条龙服务)即接口文档设计、接口调试、接口测试以及测试报告生成

3.mock 非常的方便,智能mock会自动生成合理的测试数据

4.接口文档可以一键快速生成(跟飞书在线文档是 一个意思)

缺点

  1. 打破现有的接口文档开发模式,接口文档编写需要在foxapi中进行。如果公司现有的接口文档不是以下格式,那么需要重新在foxapi中编写接口文档,增加文档投入成本

2.私有化部署需要收费!

 

### 使用 Apifox 编写接口测试脚本 #### 后置脚本用于验证请求返回结果的正确性 为了确保接口响应符合预期,在Apifox中可以通过编写后置脚本来实现这一目标。具体来说,`response.assertBody` 方法被用来对比实际接收到的数据与预设的标准值之间的差异[^2]。 ```javascript pm.test("Response body matches expected value", function () { pm.response.to.have.body('{"status":"success"}'); }); ``` 此段代码定义了一个简单的断言测试案例,它检查HTTP响应体是否等于指定字符串。当执行该测试时,如果响应内容不是 `{"status":"success"}` ,那么这个特定条件下的检验就会报告失败并给出提示信息以便于调试人员追踪问题所在之处。 #### 前置脚本动态调整请求参数 除了处理响应外,还可以利用前置脚本来改变即将发出请求中的某些部分——比如加入必要的认证令牌或是计算签名等操作。这使得每次发送前都能根据实际情况灵活定制所需携带的信息[^1]。 ```javascript const timestamp = Date.now(); const secretKey = 'your_secret_key'; const signature = crypto.createHmac('sha256', secretKey).update(timestamp.toString()).digest('hex'); pm.variables.set("timestamp", timestamp); pm.variables.set("signature", signature); // 将这些变量应用到请求头里去 pm.request.headers.add({key: 'X-Timestamp', value: '{{timestamp}}'}); pm.request.headers.add({key: 'X-Signature', value: '{{signature}}'}); ``` 这段JavaScript片段展示了怎样创建时间戳和基于密钥散列的消息认证码 (HMAC),并将它们作为环境级别的全局变量存储起来;随后再把这些值设置成自定义头部字段的一部分,从而影响后续所有的API调用行为。 #### 数据传递机制 在不同的API交互过程中共享临时状态或重要配置项是一项常见需求。借助内置函数如 `pm.environment.get()` 和 `pm.globals.set()` 可轻松完成跨多个请求间交换任意形式的数据流工作。此外,还允许直接嵌套执行由多种编程语言编译而成的应用程序文件(例如Python .py, Java .jar),进一步增强了灵活性和可扩展能力。 ```bash # Shell script example to call an external Python program and set its output as a variable. output=$(python3 /path/to/script.py arg1 arg2) echo $output | jq -r '.result' > temp.json pm.variables.set("externalResult", $(cat temp.json)) ``` 以上命令序列说明了如何在一个Bash环境中运行外部Python脚本,并把其产生的JSON格式的结果保存下来供内部使用。这里假设Python脚本接收两个命令行参数,并最终输出一个包含单个键名为 "result" 的对象结构给标准输出设备。接着通过管道符将这部分数据重定向至临时文件内,最后读取其中的内容赋值给Postman/Apifox内的相应位置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

测试开发Kevin

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

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

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

打赏作者

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

抵扣说明:

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

余额充值