在 C# 应用程序中从 Azure DevOps 获取构建测试结果

Posted

技术标签:

【中文标题】在 C# 应用程序中从 Azure DevOps 获取构建测试结果【英文标题】:Getting Build Test Results from Azure DevOps in C# app 【发布时间】:2021-11-28 11:24:09 【问题描述】:

我正在 ASP .NET Core 中制作一个程序,并且我正在尝试获取特定构建定义中特定构建的测试运行。到目前为止,我已经创建了一些方法来获取构建定义和针对特定构建的通宵构建。现在我想从提到的夜间构建中获取所有测试结果

想法是获取所有测试的列表并对其进行一些统计。我正在使用以下库

using Microsoft.TeamFoundation.Build.WebApi;
using Microsoft.TeamFoundation.Core.WebApi;
using Microsoft.TeamFoundation.TestManagement.WebApi;

我暂时没有使用任何 RestAPI 查询。只有来自提到的库的这些预先设计的方法(我知道他们在后台使用 Rest 服务),我希望我能以某种方式设法使用这些方法来做到这一点。有办法吗?

感谢您提供可能的解决方案

【问题讨论】:

【参考方案1】:

看起来GetTestResultsByBuildAsync method of the TestManagementHttpClient class 就是您要查找的内容。它返回ShallowTestCaseResult 实例的列表。它包含有关每个测试运行的非常基本的信息,但您可以使用该列表中每个实体的 Id 并将其提供给 GetTestResultByIdAsync method,它会返回有关测试结果的完整信息。

如果有很多结果,您可能希望逐页获取它们。在这种情况下,请使用the GetTestResultsByBuildAsync2 method(注意方法名称末尾的 2)。它返回分页列表集合,其中包含ContinuationToken 属性。

当您请求第一个 Top 结果时,该属性将保存继续令牌,以防有更多结果要返回。您应该将该令牌提供给后续调用。重复此操作,直到结果集合中的延续标记为空。

【讨论】:

你好@Yan。 GetTestResultsByBuildAsync() 只有 10000 条记录,而不是 54k。有没有办法获得所有这些?似乎缓冲区最大值设置为 10k。有可能以某种方式提高它吗?顺便谢谢你的回答。 @Apuna12 我已经更新了我的答案,提供了有关用于获取分页结果的方法的信息。

以上是关于在 C# 应用程序中从 Azure DevOps 获取构建测试结果的主要内容,如果未能解决你的问题,请参考以下文章

在 C# 中从后端发送 UWP 原始通知

使用 C# 中的 azure devops API 在发布和构建定义中更新代理池

C# 使用 JsonPatchDocument 更新 Azure Devops 工作项父级

C# - 如何从 Azure DevOps 工作项列表反序列化 json?

在 Azure Devops 上运行 SQ 不会扫描所有文件/子文件夹/项目,尤其是 c# 文件

如何使用 API 和 c# 从 azure DevOps 服务器下载文件到指定路径