自动化执行接口文档
1. 基础说明
- 接口前缀:
/it/api
- 鉴权方式:沿用现有登录鉴权,前端请求需携带 token
- 返回格式:沿用现有项目统一返回结构
成功返回示例
失败返回示例
2. 状态枚举
2.1 执行主单状态 status
| 值 |
含义 |
| 0 |
待触发 |
| 1 |
触发中 |
| 2 |
排队中 |
| 3 |
执行中 |
| 4 |
成功 |
| 5 |
失败 |
| 6 |
已取消 |
| 7 |
触发失败 |
| 8 |
回调异常 |
2.2 执行明细状态 status
| 值 |
含义 |
| 0 |
待执行 |
| 1 |
执行中 |
| 2 |
通过 |
| 3 |
失败 |
| 4 |
阻塞 |
| 5 |
跳过 |
| 6 |
未找到 |
| 7 |
已取消 |
2.3 触发类型 trigger_type
2.4 执行模式 run_mode
3. 接口清单
| 接口 |
方法 |
说明 |
/automation/case/run |
POST |
单条自动化用例执行 |
/automation/plan/run |
POST |
计划自动化用例执行 |
/automation/execution/list |
GET |
自动化执行记录列表 |
/automation/execution/detail |
GET |
自动化执行详情 |
/automation/execution/case/list |
GET |
自动化执行明细列表 |
以下接口为 Jenkins / pytest 内部调用,前端无需接入:
/automation/execution/case/pull
/automation/execution/queued
/automation/execution/start
/automation/execution/case/result
/automation/execution/finish
/automation/execution/abort
4. 单条自动化用例执行
接口
- 方法:
POST
- 路径:
/it/api/automation/case/run
请求体
请求参数说明
| 字段 |
类型 |
必填 |
说明 |
| caseId |
number |
是 |
功能用例 ID,也是自动化桥梁 ID |
| envCode |
string |
是 |
执行环境编码 |
| runMode |
number |
否 |
执行模式,1串行,2并行;默认1 |
| jenkinsJobName |
string |
否 |
指定 Jenkins Job,不传走后端默认值 |
| remark |
string |
否 |
触发备注 |
成功返回示例
失败返回示例
5. 计划自动化用例执行
接口
- 方法:
POST
- 路径:
/it/api/automation/plan/run
请求体:执行计划下全部自动化用例
请求体:执行计划下指定用例
请求参数说明
| 字段 |
类型 |
必填 |
说明 |
| planId |
number |
是 |
测试计划 ID |
| envCode |
string |
是 |
执行环境编码 |
| runMode |
number |
否 |
执行模式,1串行,2并行;默认1 |
| roundNo |
number |
否 |
指定计划轮次 |
| caseIds |
number[] |
否 |
指定执行的功能用例 ID 列表;不传则执行计划下全部自动化用例 |
| jenkinsJobName |
string |
否 |
指定 Jenkins Job |
| remark |
string |
否 |
触发备注 |
成功返回示例
失败返回示例
6. 自动化执行记录列表
接口
- 方法:
GET
- 路径:
/it/api/automation/execution/list
Query 参数
| 字段 |
类型 |
必填 |
说明 |
| pageNo |
number |
否 |
页码,默认1 |
| pageSize |
number |
否 |
每页数量,默认20 |
| projectId |
number |
否 |
按项目过滤 |
| planId |
number |
否 |
按计划过滤 |
| status |
number |
否 |
按执行主单状态过滤 |
| triggerType |
number |
否 |
按触发类型过滤,1单条,2计划 |
请求示例
成功返回示例
7. 自动化执行详情
接口
- 方法:
GET
- 路径:
/it/api/automation/execution/detail
Query 参数
| 字段 |
类型 |
必填 |
说明 |
| executionId |
number |
是 |
执行主单 ID |
请求示例
成功返回示例
{
"code": 20000,
"msg": "success",
"data": {
"id": 13,
"execution_no": "AE20250920153500123",
"trigger_type": 2,
"project_id": 3,
"plan_id": 2001,
"plan_round_no": 1,
"source_case_id": null,
"env_code": "st",
"run_mode": 1,
"status": 4,
"jenkins_job_name": "pytest-auto-runner",
"jenkins_queue_id": 322,
"jenkins_build_number": 108,
"jenkins_build_url": "http://jenkins/job/pytest-auto-runner/108/",
"console_url": "http://jenkins/job/pytest-auto-runner/108/console",
"report_url": "http://allure/report/108",
"total_count": 10,
"pending_count": 0,
"running_count": 0,
"passed_count": 9,
"failed_count": 1,
"blocked_count": 0,
"skipped_count": 0,
"not_found_count": 0,
"trigger_by": 8,
"trigger_source": "platform",
"trigger_message": "",
"start_time": "2025-09-20 15:36:00",
"end_time": "2025-09-20 15:45:00",
"duration_seconds": 540,
"ext": {},
"created_time": "2025-09-20 15:35:00",
"updated_time": "2025-09-20 15:45:00",
"summary": {
"total": 10,
"pending": 0,
"running": 0,
"passed": 9,
"failed": 1,
"blocked": 0,
"skipped": 0,
"notFound": 0,
"canceled": 0
}
}
}
失败返回示例
8. 自动化执行明细列表
接口
- 方法:
GET
- 路径:
/it/api/automation/execution/case/list
Query 参数
| 字段 |
类型 |
必填 |
说明 |
| executionId |
number |
是 |
执行主单 ID |
| status |
number |
否 |
按执行明细状态过滤 |
| pageNo |
number |
否 |
页码,默认1 |
| pageSize |
number |
否 |
每页数量,默认20 |
请求示例
成功返回示例
{
"code": 20000,
"msg": "success",
"data": {
"list": [
{
"id": 101,
"execution_id": 13,
"plan_case_id": 5001,
"case_id": 1001,
"case_key": "1001",
"case_title": "订单创建成功",
"run_order": 1,
"status": 2,
"pytest_nodeid": "tests/order/test_create_order.py::test_create_order",
"result_message": "执行通过",
"error_message": "",
"stack_trace": "",
"report_url": "http://allure/case/101",
"duration_seconds": 18,
"started_time": "2025-09-20 15:36:02",
"finished_time": "2025-09-20 15:36:20",
"retry_count": 0,
"ext": {},
"created_time": "2025-09-20 15:35:00",
"updated_time": "2025-09-20 15:36:20"
},
{
"id": 102,
"execution_id": 13,
"plan_case_id": 5002,
"case_id": 1002,
"case_key": "1002",
"case_title": "订单取消失败提示正确",
"run_order": 2,
"status": 3,
"pytest_nodeid": "tests/order/test_cancel_order.py::test_cancel_order",
"result_message": "断言失败",
"error_message": "AssertionError: xxx",
"stack_trace": "Traceback ...",
"report_url": "http://allure/case/102",
"duration_seconds": 12,
"started_time": "2025-09-20 15:36:21",
"finished_time": "2025-09-20 15:36:33",
"retry_count": 0,
"ext": {},
"created_time": "2025-09-20 15:35:00",
"updated_time": "2025-09-20 15:36:33"
}
],
"total": 10
}
}
失败返回示例
9. 前端接入建议
9.1 单条执行
- 页面位置:功能用例列表页 / 详情页
- 按钮:
执行自动化
- 调用接口:
POST /automation/case/run
- 成功后拿返回
data.id 作为 executionId
- 再调用:
GET /automation/execution/detail
GET /automation/execution/case/list
9.2 计划执行
- 页面位置:测试计划详情页
- 按钮:
执行自动化用例
- 调用接口:
POST /automation/plan/run
- 支持:
- 执行全部自动化用例
- 执行勾选用例(传
caseIds)
9.3 轮询建议
执行为异步触发,前端建议轮询:
GET /automation/execution/detail?executionId=xx
GET /automation/execution/case/list?executionId=xx&pageNo=1&pageSize=100
轮询频率建议:
主单终态:
4 成功
5 失败
6 已取消
7 触发失败
8 回调异常
10. 备注
- 返回字段命名为下划线风格,如:
execution_no
project_id
created_time
summary 仅在执行详情接口返回:
/automation/execution/detail
report_url、console_url 在刚触发时可能为空,待 Jenkins / pytest 回调后更新。