如何从TFS/VSTS服务器测试用例中获取并修改Resolution字段
嘿,我之前也踩过这个坑!TFS的REST API里,Resolution字段可不是直接挂在测试用例上的,这也是为啥你GET请求拿不到、PATCH也改不动的原因。下面给你梳理清楚怎么解决:
解决TFS REST API无法获取/修改Resolution字段的问题
一、先搞懂:Resolution到底属于哪个实体?
首先得明确:Resolution是测试执行结果(Test Result)的属性,不是测试用例(Test Case)本身的属性。测试用例是静态的模板,而Resolution是测试跑完后标记失败类型的字段,所以常规的测试用例GET请求自然不会返回它。
二、正确获取Resolution字段的两种方法
方法1:直接请求测试结果端点(最推荐)
找到对应测试运行(Test Run)的ID,然后调用测试结果的API,就能直接拿到Resolution字段:
GET https://{你的TFS服务器地址}/DefaultCollection/{项目名}/_apis/test/runs/{测试运行ID}/results?api-version=5.1
返回的响应里会包含resolution字段,值就是你提到的Unknown、Testerror、ProductError这些枚举值。
方法2:从测试用例关联关系中扩展获取
如果需要从测试用例的关联数据里拉取,也可以用$expand参数加载测试结果关联,但这种方式不如直接请求测试结果直观:
GET https://{你的TFS服务器地址}/DefaultCollection/{项目名}/_apis/wit/workitems/{测试用例ID}?$expand=relations&api-version=5.1
在返回的relations数组里,找到类型为TestResult的关联项,里面会包含Resolution的信息。
三、通过PATCH修改Resolution字段
同样,修改操作要针对测试结果,而不是测试用例:
- 构造JSON Patch格式的请求体,指定要替换的Resolution值:
[ { "op": "replace", "path": "/resolution", "value": "ProductError" // 可选值:Unknown、Testerror、ProductError } ]
- 发送PATCH请求到测试结果的端点:
PATCH https://{你的TFS服务器地址}/DefaultCollection/{项目名}/_apis/test/runs/{测试运行ID}/results/{测试结果ID}?api-version=5.1 Content-Type: application/json-patch+json
四、几个关键注意事项
- 权限要够:确保你的账号有测试结果的编辑权限(比如Test Manager角色),不然会返回403错误。
- 用较新的API版本:建议用5.1及以上的版本,旧版本可能不支持部分字段的操作。
- 别搞混实体:一定要区分测试用例(静态模板)和测试结果(执行后的动态数据),这是最容易踩的坑!
内容的提问来源于stack exchange,提问作者Kristofer Mar Einarsson
相关产品推荐
相关产品推荐

