TFS 构建通过 REST API 和 PowerShell 发布测试结果 TRX

Posted

技术标签:

【中文标题】TFS 构建通过 REST API 和 PowerShell 发布测试结果 TRX【英文标题】:TFS build publish test results TRX via REST API & PowerShell 【发布时间】:2021-02-10 00:30:21 【问题描述】:

我有一个包含异步远程功能测试执行的 TFS 构建过程。当测试完成执行后,我想在原始构建摘要中发布生成的 TRX 文件并更新构建状态(如果需要)。

我已经搜索了一段时间,但至今未能准确找到我正在寻找的内容:是否可以通过 PowerShell 脚本化 REST API 调用将 TRX 文件发布到构建摘要?

【问题讨论】:

那么,构建完成了,但您想在之后添加摘要并更改状态吗?你有什么理由不阻止测试完成?什么版本的 tfs? 尝试异步执行远程功能测试,以加快构建速度并减少构建代理的拥塞。 API 版本 3.2,TFS 2017 你能描述一下运行测试的远程部分吗?你是如何触发这些的? 进程从远程服务器上的 PowerShell 脚本启动 VsTest.console.exe。我的计划是添加脚本功能以在我的测试执行脚本结束时更新构建,具体取决于测试结果。 【参考方案1】:

恐怕没有可用于将TRX文件发布到构建摘要页面的rest api。

在管道执行期间,任务使用 trx 文件并读取测试结果以生成您在构建摘要页面上看到的报告。所以即使你后来成功上传了 trx 文件,trx 文件也不会被处理,并且你无法在构建摘要页面上获得测试报告。

如果您的管道等待测试执行完成,您可以尝试使用脚本将生成的 TRX 文件复制回本地代理计算机并通过发布测试结果任务发布。

如果管道在测试执行完成之前完成。您可以创建新管道以发布 trx 文件作为解决方法。但这最终会在不同的管道构建摘要页面中显示测试结果。如果您可以接受,您可以将 trx 文件复制回本地代理机器并通过Build Queuerest api 触发新管道。您还可以考虑将 trx 文件发布到 git repo 并将此 git repo 作为 git 源添加到新管道。

【讨论】:

好的,明白了;没有用于追溯发布 TRX 结果文件的 API。这里的全部目的是异步执行远程功能测试,以减少构建执行时间,从而减少构建代理的拥塞。我想在这种情况下我可以考虑几种解决方法: - 在测试失败的情况下将构建结果更新为“失败” - 添加指向 TRX 文件位置(某种类型的存储库)的链接以构建日志。 此处未提及,但我很确定构建完成后构建状态是不可变的。我认为即使它们的一部分也行不通。 感谢您的回复。根据此处的 TFS 2017 文档docs.microsoft.com/en-us/azure/devops/integrate/previous-apis/…,一旦构建完成,构建状态确实是不可变的。关于构建结果,没有提到无法更新...

以上是关于TFS 构建通过 REST API 和 PowerShell 发布测试结果 TRX的主要内容,如果未能解决你的问题,请参考以下文章

使用 TFS 2015 REST API 进行队列构建的 409 冲突响应

如何在 VSTS 仪表板小部件中使用 REST API 从 TFS 获取构建定义?

无法通过REST API为punlisherId = tfs和eventId tfvc.checkin创建VSTS webhook订阅

尝试通过使用rest api从TFS票证中读取缺陷历史来获取TFS错误状态更改日期

TFS Rest API - 通过测试用例名称或标题获取测试用例

通过 TFS REST API 将工作项添加到板列