使用 CLI
在客户端通过配置生成命令
打开一个测试场景,在上方的 tab 中切换到 CI/CD 页面内,即可看到运行配置及基于上方的运行配置,由系统自动生成的 CLI 命令。
运行配置
设置通过这条 CLI 运行此测试场景的具体运行配置,可选环境、测试数据等。这里的设置调整会立即修改下面的命令,请确保设置成需要的运行配置后,再复制命令。
CI/CD 平台
选择需要使用的 CI/CD 平台,系统会根据这个选择生成适配这个平台的流水线脚本,默认选中 CLI(命令行)。
实时运行在线数据 / 导出数据运行
选择让 CLI 使用保存在云端的测试场景数据来运行,还是使用导出成一个本地文件的测试场景数据来运行。因为数据的实时性、使用方便程度等原因,我们建议保持使用“实时运行在线数据”的方式来构建更稳定的 CI/CD 流程。
在环境/全局变量的使用上,因为在线数据中仅保存变量远程值,所以实时运行在线数据会使用当前项目中的变量远程值;而导出数据因为已将所有内容导出成文件,所以导出数据运行时,变量使用的是导出那一刻的本地值(已经包含在导出的文件中了)。
因为数据库配置、外部程序、请求文件目前都是保存在本地的,所以无论运行在线还是导出数据,都要额外将需要使用的数据库配置文件、外部程序文件、请求文件按规则保存在实际执行 CLI 机器的指定目录中。如果你的测试场景中有使用到数据库连接,系统会自动建议导出数据库配置文件。
各个文件资源的目录路径指定方式如下:
文件资源 | 指定目录路径方式 | 示例命令 |
---|---|---|
其它编程语言 | --external-program-path <path> | apifox run --access-token ****** -t 123456 -e 123456 -n 1 -r html,cli --external-program-path "D:\Download" |
数据库配置文件 | --database-connection <path> | apifox run --access-token ****** -t 123456 -e 123456 -n 1 -r html,cli --database-connection ./database-connections.json |
SSL 证书列表文件 | --ssl-client-cert-list <path> --ssl-client-cert <path> --ssl-client-key <path> --ssl-extra-ca-certs <path> | apifox run --access-token ****** -t 123456 -e 123456 -n 1 -r html,cli --ssl-client-cert-list D:\Download\ssl-client-cert-list.json |
请求所需文件 | 1. 将文件放在运行 CLI 机器的任意目录下; 2. 复制文件路径; 3. 在需要使用这个文件的测试步骤中,点击请求参数右上角的“批量编辑”功能; 4. 将文件请求参数的值更改为上面复制的路径。 |
向命令中添加 Access Token 进行使用
在 CI/CD 页面中,所有的运行配置都设置完成之后,下方实际生成的命令即是符合你配置需求的命令。如果是使用在线数据运行,则在使用之前,还需要添加 Access Token (API 访问令牌),用来补充鉴权。添加完成后的完整命令才可成功运行。
可以按照产品界面引导来快速添加,当然也可手动填入之前已生成的令牌。
插入完成之后,点击整个命令即可复制到剪切版,然后粘贴到终端或使用的 CI/CD 平台流水线中,即可通过 Apifox CLI 运行这个测试场景。示例完整命令如下:
apifox run --access-token APS-****** -t 123456 -e 123456 -n 1 -r html,cli
运行完成后上传报告并获取运行完成通知
因为通过 Apifox CLI 运行测试场景,很多情况下会结合到公司的 DevOps 流程中,变得非常自动化的执行测试场景,因此在运行完成时收到通知并且能够去看测试结果是比较常见的需求。如果需要这个测试场景在 CLI 运行完成后发送通知,则在产品界面设置运行配置时,打开通知的开关并设置通知的条件和通知对象,即可在 CLI 运行完成时给指定的对象发送测试结果概览信息。
如果你在已设置了通知的命令后,手动添加命令选项--upload-report
,则在运行 CLI 机器的本地生成的测试报告,还会上传到 Apifox 云端。这样在推送的通知中,除了文字显示的测试结果概览之外,还可以通过链接一键跳转到报告中进行更详细内容的查看与定位。
带上上传和通知功能的示例完整命令如下:
apifox run --access-token APS-****** -t 123456 -e 123456 -n 1 -r html,cli --notification 123456,123457 --upload-report
常见问题
1. 使用 CLI 后出现错误提示如何处理?
- Invalid character in header content["Authorization"]
在终端运行 Apifox CLI 命令后出现 Invalid character in header content
错误:
若确保在 Apifox 客户端 / Web 端中运行自动化测试没有异常,请检查是否在环境中设置了远程值。
2. 接口需要上传文件,在 Apifox 中已经创建好了测试场景并且可以正常运行,但是通过 CLI 运行时出现报错,如何处理?
在需要上传文件的接口中,需要上传的文件实际保存在你自己的电脑上,Apifox 里保存的仅仅只是该文件的本地路径。因此当使用 CLI 方式执行测试时,安装了 CLI 的机器无法通过该路径读取到你电脑上的这个文件,所以会报错。
针对此问题的解决方案:
- 将该文件提前上传至运行 CLI 的机器上。
- 复制该文件在运行 CLI 机器上的路径。
- 在 Apifox 的测试场景内,请求上传文件接口的步骤详情中,点击“批量编辑”按钮。
- 将运行 CLI 机器上的文件路径替换至到
file
字段的参数值。
配置完成后,该文件就可以通过 CLI 正确发送至 Apifox。如果你想要重新在本地运行该测试场景,需要将参数值中的文件路径修改为该文件在本机上的路径。
3. 如何将本地 CLI 测试报告上传至云端?
在 CLI 命令行末尾处添加 --upload-report
参数,参考代码:
apifox run https://api.apifox.com/api/v1/projects/2689726/api-test/ci-config/364654/detail\?token\=******* -r html,cli --upload-report
在“测试报告”中的“团队报告”一栏中进行查看。由 CLI 上传的测试报告,测试人一栏中将显示为空。
4. 如何在 CLI 中引用外部脚本 / 程序?
你可以在运行 Apifox CLI 命令时在末尾添加外部脚本 / 程序的路径。例如在下列命令行中,指定 CLI 引用位于 ./scripts
路径下的程序。若未指定层级关系,默认值为当前 CLI 的执行目录。
--external-program-path ./scripts
- 1. 本地路径
为了避免本地脚本出现管理混乱的情况,建议将所有脚本文件分门别类进行整理,并统一放置于特定目录,再在 CLI 中指定对应的本地路径。
- 2. 云端代码仓库
你也可以将脚本文件托管在云端的代码仓库中,然后在 CI/CD 工作流设置拉取命令,将外部脚本拉取至本地。最后在 CLI 中填写外部脚本的实际路径。