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

如何通过测试用例名称/标题而非ID查询并更新TFS测试用例

解决方案

你当前调用的是测试计划查询接口,并非测试用例查询接口,且该接口的name参数为模糊匹配,自然会返回多条结果。测试用例本质是TFS中类型为Test Case的工作项,你可以通过以下方式实现精准查询+更新:

1. C# 端通过 WorkItemTrackingHttpClient 精准查询(推荐)

直接使用WIQL(工作项查询语言)做标题完全匹配,最多只会返回1条符合要求的测试用例:

using Microsoft.TeamFoundation.WorkItemTracking.WebApi;
using Microsoft.TeamFoundation.WorkItemTracking.WebApi.Models;
using Microsoft.VisualStudio.Services.Common;
using Microsoft.VisualStudio.Services.WebApi.Patch;
using Microsoft.VisualStudio.Services.WebApi.Patch.Json;

// 初始化TFS连接
var credentials = new VssBasicCredential(string.Empty, "你的个人访问令牌(PAT)");
var connection = new VssConnection(new Uri("http://XXXX:8081/tfs/你的集合名称"), credentials);
var witClient = connection.GetClient<WorkItemTrackingHttpClient>();

// 构造完全匹配的WIQL查询语句
var query = new Wiql
{
    Query = @"SELECT [System.Id], [System.Title] 
              FROM WorkItems 
              WHERE [System.WorkItemType] = 'Test Case' 
              AND [System.TeamProject] = '你的项目名称'
              AND [System.Title] = '你要查询的测试用例完整名称'"
};

// 执行查询
var queryResult = await witClient.QueryByWiqlAsync(query);
if (!queryResult.WorkItems.Any())
{
    // 无匹配测试用例逻辑
    return;
}
// 拿到唯一匹配的测试用例ID
var testCaseId = queryResult.WorkItems.First().Id;

2. 更新测试用例

拿到ID后直接用JsonPatchDocument构造更新内容即可,示例如下:

var patchDoc = new JsonPatchDocument();
// 示例:修改测试用例的标题
patchDoc.Add(new JsonPatchOperation
{
    Operation = Operation.Replace,
    Path = "/fields/System.Title",
    Value = "修改后的测试用例名称"
});
// 示例:修改测试用例的步骤
patchDoc.Add(new JsonPatchOperation
{
    Operation = Operation.Replace,
    Path = "/fields/Microsoft.VSTS.TCM.Steps",
    Value = "<steps><step id=\"1\" type=\"ActionStep\"><parameterizedString isformatted=\"true\">测试步骤1</parameterizedString><parameterizedString isformatted=\"true\">预期结果1</parameterizedString></step></steps>"
});

// 执行更新,拿到最新的测试用例对象
var updatedTestCase = await witClient.UpdateWorkItemAsync(patchDoc, testCaseId);

3. 直接调用REST API查询(无需封装客户端场景)

如果你需要自己发HTTP请求实现,用工作项查询接口即可:

  • 请求方式:POST
  • 接口地址:http://XXXX:8081/tfs/{集合名}/{项目名}/_apis/wit/wiql?api-version=4.1
  • 请求体:
{
  "query": "SELECT [System.Id] FROM WorkItems WHERE [System.WorkItemType] = 'Test Case' AND [System.TeamProject] = '你的项目名' AND [System.Title] = 'KuKu'"
}

返回结果中workItems数组即为匹配的测试用例,完全匹配场景下只会返回1条。

内容的提问来源于stack exchange,提问作者YigalG

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 03:57:00