Apifox:API 接口自动化测试完全指南

简介: 如果要正常访问该接口的数据,需要在 header 中提供 AdminToken: token 头,这是一个常见的需要 JWT 登录认证接口。很自然的我们想到,如果自动请求登录接口获取 token 值,然后在每次请求前自动带上这个 AdminToken 头不就行了吗,没错就是这样简单,伪代码如下:

网络异常,图片无法展示
|

1. 前言

在开始前大家可以先阅读:深入了解自动化测试:什么是自动化测试及其作用?

大家好,这是一篇关于 Apifox 的接口自动化测试教程。相信你已经对 Apifox 有所了解:“集 API 文档、API 调试、API Mock、API 自动化测试,更先进的 API 设计/开发/测试工具”。

笔者是后端开发,因此这篇教程关注的是 API 自动化测试,如果你也是后端开发,正苦于没有好的方式测试接口,对保证线上接口稳定性没有信心,那么这篇文章就是为你准备的,如果你学会了 Apifox 接口自动化测试,它几乎是一个会陪伴你整个职业生涯中的一件称心应手的兵器。

接口测试可不是简单的请求一两个接口再检查一下响应结果那么简单,没有贴近业务场景的测试意义不大,但完全模拟业务场景,一比一真实的去还原用户操作流程的测试势必会很复杂,如 接口需要登陆后才能操作怎么办?一个接口依赖上一个接口请求返回的数据怎么办?后端对请求有签名验证怎么办?后端任务是异步处理的怎么办?...

不要担心,既然是完全指南,这些问题我们就都会讲到,Apifox 强大的能力可以解决这些问题,下面我们会用真实的案例,逐步讲解覆盖到这些所有的场景。建议大家打开 autotest.apifox.cn 这个项目,一边学习里面的公共脚本(公共脚本、测试套件等都打包放在 百度网盘),一边跟着练习。

2. 接口自动鉴权

知识点:环境变量、公共脚本、pm.sendRequest脚本发送请求

我们通过一个需要登录才能访问的后台新闻列表接口,来演示接口自动登录鉴权。

默认情况下访问该接口提示需要登录:

网络异常,图片无法展示
|

如果要正常访问该接口的数据,需要在 header 中提供 AdminToken: token 头,这是一个常见的需要 JWT 登录认证接口。

很自然的我们想到,如果自动请求登录接口获取 token 值,然后在每次请求前自动带上这个 AdminToken 头不就行了吗,没错就是这样简单,伪代码如下:

完整的代码见 「公共脚本」admin: login and Auth

网络异常,图片无法展示
|

这里我们从登录接口获取 token 后,将其缓存到本地的环境变量中,这样就不必每次都请求登录了。

现在我们已经完成了 请求登录接口获取 token,并设置到 请求头中的功能,然后我们再把此 公共脚本 应用到 新闻列表的接口上,实现在 请求新闻列表接口 前自动完成 “登录”。

后台有很多接口访问都需要登录,如果一个个地去设置 前置脚本 就太麻烦了,所以这里我们直接在 admin 后端接口的分组目录上设置 前置操作 公共脚本admin: login and Auth,这样整个 admin 下的全部接口都能自动登录了:

网络异常,图片无法展示
|

我们来验证一下:

网络异常,图片无法展示
|

可以看到返回了数据,说明自动登录成功了,我们在 控制台输出 中可以看到请求了登录接口,在实际请求中 可以看到 AdminToken: token 头。

在这个例子中我们是将 用于后台登录的 用户名密码 提前配置到了 环境变量中,然后利用脚本 pm.sendRequest 请求登录接口获取 token,并设置 请求头,这样就实现了接口的自动登录。

关于变量的优先级 和 脚本的执行时机,如图所示:

网络异常,图片无法展示
|

网络异常,图片无法展示
|

3. 接口自动加签

知识点:参数注入内置类库

有一些对安全性要求较高的接口可能会有对接口请求进行验签的机制,具体是 接口请求的数据 会额外多一个 sign 字段,它的值是可以是 md5(k1=v1&k2=v2...),这样就确保了请求数据不会被篡改,但是这给我们测试带来了麻烦,我们如何每次自动生成 sign 参数呢,不用担心,这对 Apifox 来说不在话下,利用 Apifox 强大的脚本功能我们甚至能够调用外部任何语言的脚本。

知道了请求加签的原理,那么实现就很容易了,无非是 在请求前 自动算出 sign ,并注入到请求参数中去,下面是伪代码:

完整的代码见 「公共脚本」parkinglot:client: request sign and common params

网络异常,图片无法展示
|

然后 把 自动加签的公共脚本设置到 client 停车场设备端 📟 分组 的前置脚本中,这样其下所有接口请求时都有 sign 参数了。

注:这里简化了签名算法, md5(k1=v1&k2=v2..., key) 其实签名算法还有一个关键的 key参数 ,不过删减这部分内容并不影响我们这里对接口自动加签的讲解。为了力求简洁,只关注最核心的东西,文章都是使用伪代码的形式,完整代码请读者自行查看项目中的公共脚本。

4. 测试用例

知识点:接口用例(顺序)、流程控制(条件、循环、等待)、测试数据、断言

在掌握了 Apifox 的强大脚本能力后,你几乎能够解决任何鉴权、加签等问题了,接下来我们开始搭建完整的测试流程,以便真实完整的模拟正常使用时的业务测试场景

我假定你已经熟悉 Apifox 中 接口用例、环境变量、变量提取、断言 等基础概念,如果不熟悉,那建议你先快速地看一下官方文档 :Apifox 帮助文档

我们先看一个简单的场景测试:

网络异常,图片无法展示
|

我们运行测试看一下:

网络异常,图片无法展示
|

网络异常,图片无法展示
|

我们在后台看一下新闻分类和新闻确实创建成功了。

再看看一个稍微复杂一点的测试场景,一个异步任务处理的场景测试:

网络异常,图片无法展示
|

相信看到这里已经不需要我解释什么了,如你所见,Apifox 的测试用例的流程编排功能非常强大,你能 DIY 出任何复杂的场景。更多用法见文档:测试流程控制 | Apifox 帮助文档

5. Apifox CLI

知识点:命令行

如果每次测试都需要我们手动点击 运行按钮 就太不方便了,没错,Apifox 当然也考虑到了这点,Apifox CLI 就可以帮助我们实现自动化的测试。

网络异常,图片无法展示
|

点击持续集成的按钮就能够生成 命令行代码:

将这行 shell 命令复制到任意地方执行即可实时运行测试用例/套件。

6. 持续集成

知识点:自动化测试

我们先在服务器上安装 apifox-cli

然后在发布工具中集成 测试命令即可:

网络异常,图片无法展示
|

为了通用性,我们使用 php 脚本 将 apifox run ... 命令进行了封装,你理解成执行的是 apifox run ...   命令即可。

这里我们用的是 Spug 发布工具,类似 Jenkins,请根据实际情况配置。

7. 测试报告

知识点:报告解析、钉钉通知

我们在 Apifox.php 脚本执行测试命令,并解析测试生成的 json 文件,然后将结果拼装发送到钉钉群,如果有失败会 at 相应的开发人员:

网络异常,图片无法展示
|

8. 附录

上面提到的公共脚本、测试套件等都打包放在这里了:百度网盘,需要的话可以拿去参考,强烈建议直接打开项目查看功能脚本,测试用例进行参考学习。

作者:xika

相关文章
|
12天前
|
JSON 前端开发 搜索推荐
关于商品详情 API 接口 JSON 格式返回数据解析的示例
本文介绍商品详情API接口返回的JSON数据解析。最外层为`product`对象,包含商品基本信息(如id、name、price)、分类信息(category)、图片(images)、属性(attributes)、用户评价(reviews)、库存(stock)和卖家信息(seller)。每个字段详细描述了商品的不同方面,帮助开发者准确提取和展示数据。具体结构和字段含义需结合实际业务需求和API文档理解。
|
6天前
|
JSON 搜索推荐 API
京东店铺所有商品接口系列(京东 API)
本文介绍如何使用Python调用京东API获取店铺商品信息。前期需搭建Python环境,安装`requests`库并熟悉`json`库的使用。接口采用POST请求,参数包括`app_key`、`method`、`timestamp`、`v`、`sign`和业务参数`360buy_param_json`。通过示例代码展示如何生成签名并发送请求。应用场景涵盖店铺管理、竞品分析、数据统计及商品推荐系统,帮助商家优化运营和提升竞争力。
50 23
|
5天前
|
JSON 缓存 API
解析电商商品详情API接口系列,json数据示例参考
电商商品详情API接口是电商平台的重要组成部分,提供了商品的详细信息,支持用户进行商品浏览和购买决策。通过合理的API设计和优化,可以提升系统性能和用户体验。希望本文的解析和示例能够为开发者提供参考,帮助构建高效、可靠的电商系统。
24 12
|
4天前
|
供应链 监控 数据挖掘
1688 商品详情接口系列(1688 API)
1688商品详情接口系列(1688 API)是阿里巴巴旗下批发电商平台提供的强大工具,支持开发者、商家获取商品的详细信息。通过商品基本信息、价格库存、图片和描述查询接口,用户可以精准高效地获取商品数据,涵盖电商运营、数据分析、市场调研等领域,极大提升工作效率。示例代码展示了如何使用Python调用这些接口,助力电商平台整合、价格监控、商品展示优化及库存管理等应用场景。
|
18天前
|
JSON API 数据格式
京东商品SKU价格接口(Jd.item_get)丨京东API接口指南
京东商品SKU价格接口(Jd.item_get)是京东开放平台提供的API,用于获取商品详细信息及价格。开发者需先注册账号、申请权限并获取密钥,随后通过HTTP请求调用API,传入商品ID等参数,返回JSON格式的商品信息,包括价格、原价等。接口支持GET/POST方式,适用于Python等语言的开发环境。
74 11
|
20天前
|
存储 测试技术 API
pytest接口自动化测试框架搭建
通过上述步骤,我们成功搭建了一个基于 `pytest`的接口自动化测试框架。这个框架具备良好的扩展性和可维护性,能够高效地管理和执行API测试。通过封装HTTP请求逻辑、使用 `conftest.py`定义共享资源和前置条件,并利用 `pytest.ini`进行配置管理,可以大幅提高测试的自动化程度和执行效率。希望本文能为您的测试工作提供实用的指导和帮助。
84 15
|
9天前
|
Web App开发 JSON 测试技术
API测试工具集合:让接口测试更简单高效
在当今软件开发领域,接口测试工具如Postman、Apifox、Swagger等成为确保API正确性、性能和可靠性的关键。Postman全球闻名但高级功能需付费,Apifox则集成了API文档、调试、Mock与自动化测试,简化工作流并提高团队协作效率,特别适合国内用户。Swagger自动生成文档,YApi开源但功能逐渐落后,Insomnia界面简洁却缺乏团队协作支持,Paw仅限Mac系统。综合来看,Apifox是国内用户的理想选择,提供中文界面和免费高效的功能。
|
1月前
|
人工智能 自然语言处理 API
Multimodal Live API:谷歌推出新的 AI 接口,支持多模态交互和低延迟实时互动
谷歌推出的Multimodal Live API是一个支持多模态交互、低延迟实时互动的AI接口,能够处理文本、音频和视频输入,提供自然流畅的对话体验,适用于多种应用场景。
99 3
Multimodal Live API:谷歌推出新的 AI 接口,支持多模态交互和低延迟实时互动
|
29天前
|
JSON 安全 API
淘宝商品详情API接口(item get pro接口概述)
淘宝商品详情API接口旨在帮助开发者获取淘宝商品的详细信息,包括商品标题、描述、价格、库存、销量、评价等。这些信息对于电商企业而言具有极高的价值,可用于商品信息展示、市场分析、价格比较等多种应用场景。
|
9天前
|
API Python
京东拍立淘图片搜索商品接口系列(京东 API)
简介:本文介绍了如何使用拍立淘图片搜索 API 在京东平台上查找相似商品。首先需安装 Python 库 `requests`,并通过内置库 `hashlib` 生成签名。API 支持通过图片 URL 或 Base64 编码的图片进行搜索,返回商品名称、价格等信息。示例代码展示了如何构建请求并处理响应。应用场景包括电商购物助手和竞品分析,帮助用户和商家提高购物效率和市场竞争力。

热门文章

最新文章