通过 CLI 运行包含云端数据库连接配置的测试场景

使用云端数据库连接配置的优点
没有云端数据库连接配置功能时,如果需要在 CLI 中运行一个带有数据库操作的测试场景,需要完成以下步骤才可正常运行:
- 在产品界面上发现导出数据库连接配置入口,点击导出成文件;

- 将导出的数据库连接配置文件放入 CLI 运行机器中;
- 将此文件在机器中的路径复制;
- 更改命令行中的选项内容,将路径改为实际值。例如:apifox run --access-token $APIFOX_ACCESS_TOKEN -t 123456 -e 123456 -n 1 -r html,cli --database-connection /Users/xxx/yyy/database-connections.json
前置任务较多,并且如果数据库连接配置有改动,则需要将上述步骤重新做一遍才可正常运行。实际使用体验是比较低效和繁琐的。如果使用了云端数据库连接配置,则可以完全省去导出配置文件、放入 CLI 执行机器中、命令行填写选项具体值这些工作,只需要给云端数据库连接配置中的变量设置好实际的值即可成功运行,让体验得以提升。以下是两种方法来使用云端数据库连接配置。
使用本地值 + 云端数据库连接配置
如果你需要运行的测试场景中,所有数据库连接使用的配置全部都是保存在云端的配置,则导出数据库连接配置的入口便不会出现(因为不需要了),CLI 运行时可以直接从云端拿到数据库连接配置中所需要的变量并根据变量替换规则去找到实际变量值,来发起连接。以下是具体示例:
1. 在环境管理中,将数据库连接的实际值设置在了对应变量的本地值中。每个需要使用的环境都设置好。

2. 确保你的数据库连接配置,除端口外完全使用了变量形式,这样就是保存成了云端数据库连接。

3. 确保你要使用 CLI 运行的测试场景中,都使用的“云端数据库连接配置”,即使用变量保存的配置。

4. 进入 CI/CD 页,环境/全局变量选择“导出本地值使用”,即可看到导出本地值的入口,点击导出。

5. 导出文件中,你可以看到关于数据库连接配置使用到的环境变量值,你也可以在文件里手动更改这些值。将文件放入到 CLI 机器中,并复制文件路径。

6. 在 CI/CD 页中,插入 Access Token,复制命令,并将变量文件的实际路径贴到选项值中。例如:apifox run --access-token $APIFOX_ACCESS_TOKEN -t 123456 -e 123456 -n 1 -r html,cli --variables /Users/xxx/yyy/pptest_variables.json
7. 运行上述 CLI 命令,数据库连接正确,可以正常运行通过。

8. 如果设置了打印结果,上传回端内的报告详情中也可以看到数据库连接的执行详情。

· 虽然数据库连接配置中的变量,使用远程值即可避免要导出本地值文件、命令行中多加一个选项的额外操作,也可以在 Apifox 客户端中直接更改远程值,但会有数据安全风险,❌ 不推荐使用。
· 如果你在连接配置中全部或部分(除端口字段外)使用了明文,则仍需要导出配置文件并在命令中通过 --database-connection 来使用。❌ 不推荐这种用法。
使用 Vault 变量 + 云端数据库连接配置
如果你使用了:环境变量远程值 + Vault 变量的方式,维护好了云端的数据库连接,那么如果你想在 CLI 中使用这个已保存在云端的链接,则可以按照以下步骤来使用:
1. 在环境管理中,将数据库连接的 Vault 变量设置在了对应变量的远程值中,本地值保持跟随远程值。每个需要使用的环境都设置好。

2. 确保你的数据库连接配置,除端口外完全使用了变量形式,这样就是保存成了云端数据库连接。

3. 确保你要使用 CLI 运行的测试场景中,都使用的“云端数据库连接配置”,即使用变量保存的配置。

4. 进入 CI/CD 页,环境/全局变量选择“使用远程值”,根据自己的实际情况设置完成后,复制 CLI 命令。

5.在需要运行 CLI 的机器上,pipeline 或终端中,先输入 export APIFOX_VAULT_KEY=VALUE
,来实际使用 Vault 变量。多个 Vault 变量使用空格分隔。具体例如下图:

不同的操作系统,语法可能有所不同。具体差异见下表:
Linux & MacOS | Windows |
---|---|
|
|
|
|
6. 在下面贴上 CLI 命令,即可开始运行。

7. 运行完成,即可在报告中看到数据库连接的结果,成功连接到了数据库并执行了操作。

8. 如果设置了打印结果,上传回端内的报告详情中也可以看到数据库连接的执行详情。

· 使用 export/set 方式写入的 Vault 变量实际值,仅在本次运行中生效,类似临时变量。下次运行仍然需要使用此方式重新写入一遍。
延伸阅读

