You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 01:42:50