在接口测试中,Newman 可以通过结合系统自带的定时任务工具(如 Windows 的任务计划程序或 Linux 的 crontab)或 CI/CD 工具(如 Jenkins)来实现定时执行。以下是具体实现方法及推荐方案:
一、通过系统定时任务工具实现定时执行
1. Windows 系统(任务计划程序)
-
步骤:
-
编写批处理脚本(.bat 文件):
- 将 Newman 运行命令写入文本文件,并保存为
.bat
后缀。例如:newman run D:\postman\collection.json -e D:\postman\environment.json -r html --reporter-html-export D:\report\result.html
- 确保脚本中的路径和参数正确无误。
- 将 Newman 运行命令写入文本文件,并保存为
-
设置定时任务:
- 右键点击“此电脑”,选择“管理”,打开“计算机管理”页面。
- 点击“任务计划程序”,选择“创建任务”。
- 在“触发器”选项卡中,设置执行时间(如每天 8:00)。
- 在“操作”选项卡中,选择之前编写的
.bat
文件。 - 点击“确定”保存任务。
-
-
优点:
- 无需额外安装工具,直接利用系统功能。
- 适合简单的定时任务需求。
-
缺点:
- 任务管理界面相对简陋,缺乏高级功能(如任务依赖、邮件通知等)。
2. Linux 系统(crontab)
-
步骤:
-
编写 Shell 脚本(.sh 文件):
- 将 Newman 运行命令写入文本文件,并保存为
.sh
后缀。例如:#!/bin/bash newman run /path/to/collection.json -e /path/to/environment.json -r html --reporter-html-export /path/to/report.html
- 给脚本添加执行权限:
chmod +x /path/to/run_tests.sh
- 将 Newman 运行命令写入文本文件,并保存为
-
设置定时任务:
- 打开终端,输入
crontab -e
编辑当前用户的定时任务。 - 添加一行来指定执行时间和脚本路径。例如,每天 8:00 执行:
0 8 * * * /path/to/run_tests.sh
- 保存并退出编辑器,crontab 会自动加载新的配置。
- 打开终端,输入
-
-
优点:
- 灵活性强,支持复杂的定时规则。
- 适合服务器环境下的自动化测试。
-
缺点:
- 需要熟悉 Linux 命令和 crontab 语法。
二、通过 CI/CD 工具实现定时执行(推荐)
1. Jenkins
-
步骤:
-
安装 Newman 和 HTML 报告插件:
- 在 Jenkins 服务器上安装 Node.js 和 npm。
- 通过 npm 安装 Newman 和 HTML 报告插件:
npm install -g newman newman-reporter-html
-
配置 Jenkins 任务:
- 创建一个自由风格的项目。
- 在“构建触发器”选项卡中,选择“定时构建”,并设置执行时间(如
H/5 * * * *
表示每 5 分钟执行一次)。 - 在“构建”选项卡中,选择“Execute Windows batch command”或“Execute shell”,并输入 Newman 运行命令。例如:
或newman run D:\postman\collection.json -e D:\postman\environment.json -r html --reporter-html-export D:\report\result.html
newman run /path/to/collection.json -e /path/to/environment.json -r html --reporter-html-export /path/to/report.html
-
运行任务:
- 保存配置后,Jenkins 会按照设定的时间自动执行任务。
- 可以在 Jenkins 控制台查看任务执行结果和报告。
-
-
优点:
- 功能强大,支持任务依赖、邮件通知、分布式构建等高级功能。
- 适合企业级自动化测试需求。
-
缺点:
- 需要安装和配置 Jenkins 服务器,学习成本较高。
三、推荐方案
-
简单定时任务:
- 如果只是需要在本地或服务器上定时执行 Newman 测试,且需求不复杂,推荐使用系统自带的定时任务工具(Windows 任务计划程序或 Linux crontab)。
-
企业级自动化测试:
- 如果需要在团队中共享测试结果、集成到 CI/CD 流程中,或需要更复杂的任务管理功能,推荐使用 Jenkins。Jenkins 提供了丰富的插件和功能,可以满足企业级自动化测试的需求。