如何通过Azure DevOps API获取关联用户故事的测试用例及运行结果?
从Azure DevOps用户故事关联检索测试用例及结果的可行方法
方法一:使用OData Analytics查询
OData是最直接的方式,能一次性关联用户故事、测试用例和测试结果,无需多次API调用。以下是完整的查询示例:
https://analytics.dev.azure.com/{组织名}/{项目名}/_odata/v3.0-preview/WorkItemLinks ?$filter=Source/WorkItemType eq 'User Story' and Target/WorkItemType eq 'Test Case' &$expand=Target($expand=TestResults($select=TestResultId, Outcome, State, CompletedDate, TestRun/Name)) &$select=Source/WorkItemId, Source/Title, Target/WorkItemId, Target/Title
说明:
- 替换
{组织名}和{项目名}为实际值 $filter筛选源工作项为用户故事、目标为测试用例的关联链接$expand=Target($expand=TestResults...)展开测试用例关联的所有测试结果,同时可嵌套展开测试运行信息(如测试运行名称)$select指定需要返回的核心字段,可根据需求添加更多(如Source/AssignedTo、Target/Priority等)
如果用户故事和测试用例通过自定义链接类型关联,需在$filter中添加链接类型筛选:
?$filter=Source/WorkItemType eq 'User Story' and Target/WorkItemType eq 'Test Case' and LinkTypeName eq '自定义链接名称'
方法二:使用Azure DevOps REST API分步获取
如果需要更灵活的逻辑控制,可分两步调用REST API:
1. 获取用户故事关联的测试用例
调用Work Item链接接口,获取用户故事关联的所有测试用例:
GET https://dev.azure.com/{组织名}/{项目名}/_apis/wit/workitems/{用户故事ID}?$expand=relations&api-version=7.1-preview.3
从返回结果的relations数组中筛选符合条件的条目:
- 若为层级关联(测试用例是用户故事的子项),筛选
rel值为LinkTypes/Hierarchy-Reverse的条目 - 若为自定义关联链接,筛选
rel值为LinkTypes/{自定义链接类型}的条目 - 每个符合条件的条目中,
url字段末尾即为测试用例ID
2. 批量获取测试用例的运行结果
针对每个测试用例ID,调用测试结果接口获取所有运行结果:
GET https://dev.azure.com/{组织名}/{项目名}/_apis/test/results?testCaseId={测试用例ID}&api-version=7.1-preview.6
若需指定测试运行范围,可添加runId参数:
GET https://dev.azure.com/{组织名}/{项目名}/_apis/test/Runs/{测试运行ID}/results?testCaseId={测试用例ID}&api-version=7.1-preview.6
优化建议:使用批量API一次性请求多个测试用例的结果,减少HTTP调用次数。
关键注意事项
- 权限要求:确保调用账号拥有
Work Item Reader和Test Reader权限,否则会返回权限不足错误 - 链接类型匹配:确认用户故事和测试用例的关联类型(层级链接/自定义链接),避免筛选条件错误
- 字段扩展:根据业务需求调整返回字段,比如测试结果的
TestConfigurationName、Comment等都可添加到查询中
内容的提问来源于stack exchange,提问作者Juan Francisco Cisneros
相关产品推荐
相关产品推荐

