定时任务是按照预设时间自动执行的任务,它可以有效解决一些常见问题,比如频繁执行的回归测试和大规模的接口测试,这些任务需要在固定时间点或间隔周期内自动运行,以确保软件的持续集成和持续交付过程中的稳定性和可靠性。通过使用定时任务,可以减少人为操作的失误和麻烦,提高测试效率和准确性。
Apifox 现已支持设置定时任务,例如,你可以定时执行自动化测试中的测试场景。
定时任务生成的测试报告还可以发送给邮箱、飞书、钉钉、企业微信等平台。
当前自动化测试的定时任务仅支持基于自托管 Runner 来执行。Runner 可以理解为是一个自动化程序,可以托管在独立服务器上,它能够执行 Apifox 内的自动化测试定时任务、定时导入接口文档等工作。
下文就来介绍一下怎么通过自托管 Runner 来定时执行自动化测试的测试场景,在开始之前,请确保把 Apifox 更新到了最新版!
“
前置条件
”
要使用定时任务,首先需要在服务器实例中部署 Runner,以下是 Runner 运行环境的推荐配置及部署方法。
1 Runner 运行环境
推荐的实例规格如下:
当服务器实例准备好后,在部署 Runner 之前还需要确保实例中已安装 Docker 环境,因为 Runner 通过 Docker 来执行任务。
2 安装 Docker
如何在服务器实例中安装 Docker?可以自行搜索一下,或者参考 Docker 官方文档来安装(国内镜像源可以找找云服务器厂商的)。需要注意的是,Docker 的最低版本号需使用 20.10.0。
Docker 环境有了之后,就可以开始部署 Runner 了。
3 部署 Runner
首先需要确保你有团队管理员权限,然后在 Apifox 的主窗口中,选择你的团队,并依次点击「团队资源 -> 通用 Runner -> 部署通用 Runner」。
在弹出框中复制部署通用 Runner 的命令,你可以根据需要定义命令,支持自定义服务器 OS、暴露端口、挂载数据目录等。以下是对这些设置的详细说明:
-
服务器 OS:指定了 Docker 容器运行的操作系统。包括 Linux、macOS 和 Windows,选择正确的操作系统是确保 Docker 容器能够正确运行的关键。
-
Docker 镜像:提供了三种版本,分别是通用版、精简版和自定义版本。若你的「自定义脚本」需要调用外部程序,请根据不同版本所包含的语言环境选择合适的镜像进行安装。
-
通用版:包含 Runner 的所有功能,并内置以下外部程序的语言环境:Node.js 18、Java 21、Python 3、PHP 8。
-
精简版:包含 Runner 的所有功能,仅内置 Node.js 18 语言环境。
-
自定义:包含 Runner 的所有功能,并支持自定义外部程序的语言环境。你可以通过创建自己的 Dockerfile,根据需求添加或移除相关环境。
-
-
暴露端口:Docker 容器默认不会将内部端口暴露给外部访问。通过 -p 参数,你可以将容器内部的端口映射到宿主机的端口上,使得外部可以访问容器提供的服务。例如,-p 80:4524 表示将容器内部的 4524 端口映射到宿主机的 80 端口。
-
挂载数据目录:使用 -v 参数可以将宿主机的目录挂载到容器内部,这样容器就可以访问和操作宿主机上的文件(数据库配置、外部程序等)。例如,-v "/opt/runner":/opt/runner 表示将宿主机的 /opt/runner 目录挂载到容器的 /opt/runner 目录。
在服务器实例中粘贴并运行刚才复制的命令,系统将自动拉取镜像并启动容器。
你可以通过 docker ps 命令来查看已启动的 Runner 服务。
Runner 部署完成后,回到 Apifox 的「团队资源」页面,可以查看已连接的 Runner 服务(如未显示,可尝试刷新页面)。在这里,你可以对 Runner 进行管理,包括重命名、添加描述、删除、停用或重启。
成功部署自托管 Runner 后,你就可以在 Apifox 中创建和使用定时任务了。
“
创建 定时任务
”
在项目的自动化测试模块中,选择「定时任务」,然后新建定时任务。设置以下信息:
-
任务名称与说明: 用于区分定时任务并描述其详细目的。
-
测试场景: 定时任务将执行选定的一个或多个测试场景,每个场景可单独配置。
-
运行周期: 设置任务的执行周期,如每周日 11 点或每 6 小时一次。
-
运行于: 选择执行任务的实例,可使用 Apifox 云端(敬请期待)或团队自托管的 Runner。
-
通知: 开启通知后,运行结果将按设置发送给相关人员,可手动输入非项目成员的邮箱。
基本信息设置完毕后保存即可。
“
执行 定时任务
”
定时任务将根据设置的「运行周期」自动执行。在定时任务列表中,可以查看已运行次数、启用状态,以及下次运行时间。
“
查看 测试报告
”
定时任务运行完成后,运行结果将保存在定时任务的运行结果页面中,你可以随时进入「运行历史」页面查看定时任务运行的详情。
同时,系统将按照设置的通知渠道向相关人员或者平台发送信息。
点击邮件中的「查看详情」链接,即可跳转到 Apifox 端内查看更详细的定时任务报告。
“
常见问题 解答
”
Q 在服务器实例中部署了 Runner,但「定时任务」到设定时间点后不生效怎么办?
针对这种情况,建议首先在 Apifox 中手动运行一次「定时任务」,然后在服务器实例中使用 docker logs 命令查看容器的运行日志,确认是否有「定时任务」的相关信息。
如果日志中没有相关信息,建议检查服务器是否开放了 4524 端口,并确认该端口未被防火墙拦截。
同时,可以尝试在测试场景中将「运行于」更改为当前部署的 Runner ,然后点击「运行」按钮,通过检查应用内显示的内容以及 Docker 容器日志,并等待测试场景运行完成后,查看是否有「测试报告」回传,以更详细地定位问题。
此外,你还可以尝试删除旧版 Docker 容器及其对应的镜像,然后重新部署最新版的 Runner。如果问题依然存在,欢迎加入交流群与我们的技术支持联系,以便进一步解决。
Q 如何在服务器实例中删除已安装的 Runner?
首先需要删除容器,命令如下:
-
查看容器:docker ps -a
-
停止容器:docker stop
-
删除容器:docker rm
然后删除镜像,命令如下:
-
查看镜像:docker images
-
删除镜像:docker rmi
这样,就把部署在服务器实例中的 Runner 删除干净了。
“附录 ”
以下是常用的 Docker 命令,你可以对已部署的 Runner 执行相关的操作:
定时任务在 Apifox 中能极大提升工作效率,简化操作流程。通过自托管 Runner 的部署,你可以灵活地安排自动化测试和接口文档导入,享受更高效的团队协作。未来,我们还将推出更多便捷功能,让 Apifox 云端支持定时任务,敬请期待!