如何在Azure DevOps/TCM中将指定测试点(测试用例)关联到测试运行?
解决方案:将Datadog测试结果关联到Azure TCM指定TestRun
核心问题原因
直接调用PATCH TestPoint API修改测试点状态时,Azure TCM会默认给每个测试点的变更创建独立TestRun。要把多个测试点的结果归集到同一个预先创建的TestRun下,必须改用测试结果提交API,而非直接修改测试点状态。
具体实现步骤
创建统一的TestRun
调用CreateTestRun API时,补充绑定测试计划、套件的参数,确保TestRun与目标测试范围关联:POST https://dev.azure.com/{{orgID}}/{{TeamID}}/_apis/test/runs?api-version=7.1-preview.3请求体示例:
{ "name": "Datadog回归测试执行-20240520", "plan": { "id": "{{PlanID}}" }, "suite": { "id": "{{SuiteID}}" }, "state": "InProgress", "automated": true }保存返回的
id(即目标runId),后续所有测试结果都将关联到这个ID。提交测试结果到指定TestRun
替代原来两次PATCH TestPoint的操作,在测试完成后,调用更新测试结果API,把每个测试点的最终状态提交到已创建的TestRun中:POST https://dev.azure.com/{{orgID}}/{{TeamID}}/_apis/test/runs/{{runId}}/results?api-version=7.1-preview.1请求体示例(批量提交多个测试点结果):
[ { "testPoint": { "id": "{{TestPointID_1}}" }, "outcome": "Passed", "state": "Completed", "comment": "Datadog测试通过:Order API断言验证成功" }, { "testPoint": { "id": "{{TestPointID_2}}" }, "outcome": "Failed", "state": "Completed", "comment": "Datadog测试失败:截图验证不通过", "attachments": [ { "name": "测试截图.png", "stream": "base64编码的截图内容", "attachmentType": "GeneralAttachment" } ] } ]更新TestRun状态(可选)
所有测试结果提交完成后,将TestRun的状态改为Completed:PATCH https://dev.azure.com/{{orgID}}/{{TeamID}}/_apis/test/runs/{{runId}}?api-version=7.1-preview.3请求体:
{ "state": "Completed" }
关键注意事项
- 无需在测试开始时修改测试点状态:TestRun的
InProgress状态已能标识测试正在执行,测试点的状态会通过提交的测试结果自动同步。 - 批量提交结果:可以将多个测试点的结果一次性提交,减少API调用次数,同时确保所有结果归属于同一个TestRun。
- 附件自动化:直接在测试结果中附带Datadog的截图等附件,无需手动复制粘贴。
内容的提问来源于stack exchange,提问作者ThatBraziliann
相关产品推荐
相关产品推荐

