在编排自动化测试场景的时候,有一个问题其实很容易遇到。
不同的场景用例,往往会用到同一批测试数据。
比较常见的做法,就是把这份数据复制一份,然后粘贴到其他场景用例里,每个场景各维护一份。刚开始场景不多的时候,这种方式其实也没什么问题。
但随着自动化测试的场景越来越多,同一份测试数据就会被复制到很多地方。
一旦测试数据需要调整,就得逐个场景去修改。场景少还好,场景一多就很难保证每个地方都能同步更新,时间久了也很容易出现数据不一致的情况。
其实在不少项目里,自动化测试维护成本变高,往往就是从这里开始的。
针对这种情况,我们在 Apifox 的自动化测试里增加了一种新的数据管理方式,叫做「共用测试数据」。

通过共用测试数据,可以把原本分散在各个场景里的测试数据统一管理,多个场景用例都可以直接引用。
当测试数据需要调整时,只需要修改这一处地方,所有引用它的场景用例都会自动同步更新。
共用测试数据支持自动批量生成数据,只需要设置生成规则,就可以一次生成大量测试数据,不需要手动逐条录入。

如果已经有现成的数据,也可以直接导入,比如 CSV 或 JSON 文件。同时也支持从数据库读取数据,直接作为测试数据使用。

下面我们详细看看这个功能具体怎么用,在开始之前,请先将 Apifox 更新到最新版。
创建共用测试数据
Apifox 支持两种方式创建「共用测试数据」,以适应不同的使用场景。
静态测试数据
静态数据适用于那些内容相对固定的场景,比如一组固定的测试账号或地区编码。
进入 Apifox 项目,在左侧菜单栏中点击「自动化测试」,然后切换到「测试数据」标签页。点击该标签页上的 ...,选择「新建测试数据(静态)」。

进入编辑界面后,可以手动添加数据列(变量),也可以直接导入 CSV 或 JSON 格式的文件。

测试数据的「变量名」设置好后,可以根据规则批量生成数据,表格的每一列都会成为一个可在后续测试中引用的变量。

编辑完成后,点击保存即可完成静态共用测试数据的创建。
数据库连接测试数据
对于需要从真实数据库中获取数据的场景,比如从用户表中随机抽取一批测试用户进行测试,使用数据库连接的方式会更加高效。
同样在「测试数据」标签页,点击 ...,选择「新建测试数据(数据库连接)」。

如果项目尚未配置数据库连接,系统会引导你进行设置。选择一个已有的数据库连接,或创建一个新的连接。
配置好「数据库连接」后,你需要在 SQL 编辑区域中编写查询语句,用于从数据库中提取所需的测试数据。这里的 SQL 语句支持使用 Apifox 的环境变量。一个简单的 SQL 查询命令如下:
SQL
SELECT id, name, email FROM pets LIMIT 0, 10;
点击「保存」,Apifox 会执行该 SQL 语句,并将查询结果作为测试数据保存下来。

需要注意,通过这种方式获取的数据在保存后就变成了静态数据。它不会随着数据库内源数据的变化而自动更新。如果需要同步最新的数据,可以进入该测试数据的编辑页面,手动点击「刷新」按钮来重新获取。

在场景用例中使用共用测试数据
数据创建完成后,就可以在自动化测试的「场景用例」中进行引用了。
打开或新建一个场景用例,在右侧的「运行配置」面板中,找到「测试数据」这一项。
点击下拉框,此时列表中会显示出所有已创建的「共用测试数据」,选择你需要的那个数据集。

引用成功后,这份数据集中的所有列名都会成为当前场景用例可用的变量。在用例的任何步骤中,比如接口请求的 URL、参数或请求体中,都可以通过 \{\{变量名\}\} 的语法来引用这些数据。

当运行此场景用例时,如果共用测试数据包含多行记录,Apifox 会为每一行数据都完整地执行一次测试流程,这也就是数据驱动测试的实现方式。

管理你的共用测试数据
随着项目的推进,对共用测试数据的管理也变得重要起来。
编辑与维护
在「测试数据」列表中,点击任意数据名称即可进入编辑界面。对于静态数据,你可以自由地增删改查数据行和数据列。
对于通过数据库连接创建的数据,其内容是只读的,不能直接编辑。但可以更改数据库连接配置,或者调整 SQL 查询语句,然后重新获取数据。
按环境配置数据
共用测试数据支持按环境配置,你可以为开发环境、测试环境、生产环境等分别维护不同的数据集。

当你在运行测试用例时切换环境,Apifox 会自动加载并使用对应环境下的数据集,无需手动更改。
到这里,「共用测试数据」这个功能的基本用法就介绍完了。
如果你的项目里已经有不少自动化测试场景,不妨试试把一些重复使用的数据整理成「共用测试数据」,整体维护起来会轻松不少。
如果在使用过程中遇到不太清楚的地方,也可以查看 Apifox 的 帮助文档,里面有更完整的功能说明和配置示例。有任何问题欢迎在 Apifox 用户群与我们交流沟通。
同时,Apifox 提供企业私有化部署版本,通过本地化部署、客制化服务,协助企业进一步提升研发团队效能。