如何通过 C# 中的 Release ID 从 TFS 获取测试结果
Posted
技术标签:
【中文标题】如何通过 C# 中的 Release ID 从 TFS 获取测试结果【英文标题】:How to get test results from TFS by Release ID in C# 【发布时间】:2020-06-28 12:25:48 【问题描述】:我无法找到在 C# 中获取给定版本的测试结果的方法。
我之前所做的是,通过构建 ID 获取测试结果。
这是一个示例代码
int buildId = 123;
const string TFS_url = "<TFS_URL>";
string projectname = "<Teamname>";
TfsTeamProjectCollection ttpc = new TfsTeamProjectCollection(new Uri(TFS_url));
// Get build information
BuildHttpClient bhc = ttpc.GetClient<BuildHttpClient>();
// Get testrun for the build
TestManagementHttpClient ithc = ttpc.GetClient<TestManagementHttpClient>();
QueryModel qm = new QueryModel("Select * From TestRun Where BuildNumber Contains '" + buildId + "'");
List<TestRun> testruns = ithc.GetTestRunsByQueryAsync(qm, projectname).Result;
List<List<TestCaseResult>> allTestresults = new List<List<TestCaseResult>>();
foreach (TestRun testrun in testruns)
List<TestCaseResult> testresults = ithc.GetTestResultsAsync(projectname, testrun.Id).Result;
allTestresults.Add(testresults);
我更喜欢在 C# 中使用给定的类,而不必通过 API 来完成。
【问题讨论】:
【参考方案1】:build/release的测试结果存储在test runs中,所以你只需要先获取build/release的test run,然后再取回测试运行的测试结果。
您可以从特定版本的测试日志中获取测试运行 ID。
因此,最简单的方法是使用 REST API 从日志中获取特定的测试运行 ID。
GET https://instance/project/_apis/release/releases/releaseId/environments/environmentId/deployPhases/releaseDeployPhaseId/tasks/taskId/logs?api-version=version
详情请见Get Task Log v5。
然后只需通过测试运行 ID 即可获取测试结果详细信息。与您用于构建的共享代码示例类似。
【讨论】:
感谢 REST API 链接,我可以使用它。所以没有办法使用 Microsoft 的 NuGet 包(如 Microsoft.TeamFoundationServer.Client)? 您好 Jteve_Sobs,我们有 Microsoft.VisualStudio.Services.Release.Client,通过公共 REST API 提供对发布服务的访问。它实际上仍在使用 Rest API 来调用。对于完整的包,你可以在这里查看我们的官方文档:docs.microsoft.com/en-us/azure/devops/integrate/concepts/…以上是关于如何通过 C# 中的 Release ID 从 TFS 获取测试结果的主要内容,如果未能解决你的问题,请参考以下文章
如何从 C# 中的同一方法返回字符串以及 IEnumerable<T>? [复制]
如何从 C# 中的 MethodCallExpression 调用方法