Link 测试结果通过 API 在 Azure Devops 中发布

Link test results into a release in Azure Devops through API

我正在 运行在 Azure 的容器化环境中进行一些测试,我想在与其发布相关的 Azure Devops 中发布这些测试结果。

想法是测试用例 运行 正在发布管道中,容器在完成后会发布测试并将它们显示在 Azure Devops 的测试部分。

我已经成功地通过容器上的挂载卷和管道中的 Publish 测试任务做到了这一点。但是测试大约需要 1 小时,在此期间它会在 Azure 中使用一个管道代理。

我一直在研究 Azure Devops API 并设法创建了一个新测试运行 并通过 API 添加了测试。我已通过 ID https://docs.microsoft.com/en-us/rest/api/azure/devops/test/runs/create?view=azure-devops-rest-5.0 将测试 运行 与发布相关联。然后将完成的测试结果添加到测试中运行。但是在发布测试中没有显示。

有人遇到过这个问题吗?

更新结束休息 API。

在这里我获取了发布ID(我希望我能够在发布管道中获得这个发布ID)

curl --location --request GET 'https://vsrm.dev.azure.com/{organization}/NF Development/_apis/release/releases?api-version=6.0'

我创建了一个与此版本相关的测试运行

curl --location --request POST 'https://dev.azure.com/{organizationname}/NF Development/_apis/test/runs?api-version=5.0' \

--header 'Content-Type: application/json' \
--data-raw '{
 "name": "Testcafe new", 
 "ReleaseReference": { "id": "1276" }, 
 "isAutomated": true, 
 "state": "Waiting" 
}'

我在测试中添加测试运行我在容器中获取

curl --location --request POST 'https://dev.azure.com/{organizationname}/NF Development/_apis/test/Runs/1004040/results?api-version=6.0' \
--header 'Content-Type: application/json' \
--data-raw '[{
    "testCaseTitle": "Testing Tescafe through Azure API",
    "automatedTestName": "Patrick Test",
    "priority": 1,
    "outcome": "Passed"
  }
  ]'

此时我可以在测试工厂中看到测试 运行,但是释放里面的测试部分是空的。

------------------------编辑-------------------- -

可能是我的要求不够明确。我想要实现的是发布结果通过发布管道执行的操作,但使用的是 AzureDevops 管道。

例如,我有这个任务 运行ning,我可以单击发布环境的测试选项卡,并从我的构建中识别所有测试。即使我创建了一个如下所述的 TestRun,我也看不到这种情况发生。

出现此问题的可能原因是您的测试 运行 未正确链接到版本。

Runs - CreateRestAPI中,不仅需要指定Release id,还必须指定release uri、release environment id和release enviornment uri

这是一个关于创建链接到发布的测试 运行 的示例:

{
  "name": "A",
  "plan": {
    "id": {Test Plan id}
  },
   "releaseReference":{
      "id": {release id},
      "name": "{Release name}",
      "definitionId": {Release definition ID},
      "environmentDefinitionId": {Release environment definition ID},
      "environmentName": "{Release environment name}",
      "environmentDefinitionName": "{Release environment definition name}",
      "environmentId": {Release environment ID}
   },
   "releaseUri": "{URI of release associated with the run}",
   "releaseEnvironmentUri": "{URI of release environment associated with the run}"
   "state": "Waiting"
}