使用API 以编程方式在Azure DevOps管道内添加和更新测试

问题描述 投票:0回答:1

我正在将我们的一个项目转换为使用Azure DevOps而不是AppVeyor for CI。作为构建的一部分,我们使用自定义测试运行器来执行某些测试。

[在AppVeyor中运行时,我们直接从测试运行器调用REST API,以将正在运行的测试通知构建服务器并更新其状态。如Add TestsUpdate Tests文档的REST部分所示,这非常简单,并为我们与AppVeyor的UI集成提供了很好的集成。

我一直在研究如何在Azure DevOps中执行相同的操作。我已经找到addingupdating测试结果的REST API部分。从API文档中还不能完全清楚这是否是我正在运行的管道中使用的,或者是否用于其他情况。我一直在寻找其他尝试做同样事情的人,但到目前为止没有任何运气。大多数示例都谈论上传测试结果文件,但这似乎是发布测试结果的一种间接方法,特别是因为我想在运行所有测试之前先注册它们,然后在完成时更新其状态。

有人在构建期间使用Azure DevOps API发布测试结果方面有任何指针或示例吗?

azure-devops tfvc appveyor
1个回答
1
投票

您非常接近答案。请参阅此文档:Surface test results in the Tests tab

除了通过任务发布测试结果,例如发布测试结果任务,VS测试等。我们还提供了一种通过Rest api上传结果的方法:

enter image description here

要实现所需的功能,必须先使用一个已知的内部版本号创建一个测试运行,然后将测试结果发布到该测试中。

  1. Create对现有版本的新测试,在请求正文中指定buildID

示例:

POST https://dev.azure.com/{org name}/{project}/_apis/test/Runs/{runId}/results?api-version=5.0

{
 "name": "NewTest", 
 "build": { "id": "162" }, 
 "isAutomated": true, 
 "state": "Waiting" 
}
  1. 运行测试,以便可以得到测试结果。

  2. 现在,将此新测试结果发布到先前创建的测试中。

[{“ testCaseTitle”:“ ReferBuild”,“ automatedTestName”:“ ReferBuildAuto”,“优先级”:1,“结果”:“通过”}]

这里您可以参考doc中显示的示例。

  1. 最后,您可以使用update API。>
© www.soinside.com 2019 - 2024. All rights reserved.