如何在Azure DevOps流水线中通过用例名动态添加TestCase至TestSuite
测试自动化框架与Azure Test Plan集成的流水线全自动化优化方案
我们正在通过Azure DevOps流水线将测试自动化框架与Azure Test Plan集成,已将核心步骤转换为Bash脚本并支持通过输入参数planName、suiteName、caseName动态获取测试计划ID(步骤1)和测试套件ID(步骤2)。但当前流程存在卡点:步骤3获取测试用例ID前需手动将测试用例添加至测试套件,无法实现全自动化。需在步骤2与步骤3之间新增自动将测试用例添加至测试套件的任务,打通全流程。
完整自动化步骤(含新增任务)
1. 获取测试计划ID
- 接口地址:
https://dev.azure.com/yourOrganizationName/yourProjectName/_apis/test/plans?api-version=5.0 - 请求方法:
GET - 提取测试计划ID的JsonPath:
$.value.[?(@.name == 'yourPlanName')].id
2. 获取测试套件ID
- 接口地址:
https://dev.azure.com/yourOrganizationName/yourProjectName/_apis/test/plans/planID/suites?api-version=5.0 - 请求方法:
GET - 提取测试套件ID的JsonPath:
$.value.[?(@.name == 'yourSuiteName')].id - 依赖:
planID来自步骤1
新增任务:自动将测试用例添加至测试套件
2.1 通过测试用例名称获取测试用例ID
- 接口地址:
https://dev.azure.com/yourOrganizationName/yourProjectName/_apis/wit/workitems?$expand=Relations&api-version=7.1-preview.3 - 请求方法:
GET - 请求参数:添加查询参数
$filter=System.Title eq 'yourTestCaseName' and System.WorkItemType eq 'Test Case' - 提取测试用例ID的JsonPath:
$.value[0].id
2.2 将测试用例添加到指定测试套件
- 接口地址:
https://dev.azure.com/yourOrganizationName/yourProjectName/_apis/test/plans/planID/suites/suiteID/testcases?api-version=5.0 - 请求方法:
POST - Content-Type:
application/json - 请求体示例:
{ "testCaseIds": [tcID] }
- 依赖:
planID来自步骤1,suiteID来自步骤2,tcID来自子步骤2.1
3. 获取测试用例ID(验证用例已添加)
- 接口地址:
https://dev.azure.com/yourOrganizationName/yourProjectName/_apis/test/plans/planID/suites/suiteID/points?api-version=5.0 - 请求方法:
GET - 提取测试用例ID的JsonPath:
$..[?(@.name == 'yourTestCaseName')].id - 依赖:
planID来自步骤1,suiteID来自步骤2
4. 获取测试点ID
- 接口地址:
https://dev.azure.com/yourOrganizationName/yourProjectName/_apis/test/plans/planID/suites/suiteID/points?testCaseId=tcID&api-version=5.0 - 请求方法:
GET - 提取测试点ID的JsonPath:
$.value.[0].id - 依赖:
planID来自步骤1,suiteID来自步骤2,tcID来自步骤3
5. 创建测试运行
- 接口地址:
https://dev.azure.com/yourOrganizationName/yourProjectName/_apis/test/runs?api-version=5.0 - 请求方法:
POST - Content-Type:
application/json - 请求体示例:
{"name":"runName","plan":{"id":planID},"pointIds":[pointID]}
- 提取测试运行ID的JsonPath:
$.id - 依赖:
planID来自步骤1,pointID来自步骤4
6. 获取测试结果ID
- 接口地址:
https://dev.azure.com/yourOrganizationName/yourProjectName/_apis/test/runs/runID/results?api-version=6.0-preview.6 - 请求方法:
GET - 提取测试结果ID的JsonPath:
$.value.[0].id - 依赖:
runID来自步骤5
7. 更新测试运行结果
- 接口地址:
https://dev.azure.com/yourOrganizationName/yourProjectName/_apis/test/runs/runID/results?api-version=6.0-preview.6 - 请求方法:
PATCH - Content-Type:
application/json - 用例通过时请求体示例:
[{ "id": resultID , "outcome": "PASSED" ,"state": "Completed", "comment": "执行成功" }]
- 用例失败时请求体示例:
[{ "id": resultID , "outcome": "FAILED" ,"state": "Completed", "comment": "执行失败", "associatedBugs": [{"id":bugID}]}]
- 依赖:
runID来自步骤5,resultID来自步骤6
内容的提问来源于stack exchange,提问作者Vowneee
相关产品推荐
相关产品推荐

