如何使用Azure DevOps REST API将文件附加到Visual Studio测试?

如何使用Azure DevOps REST API将文件附加到Visual Studio测试?,rest,automated-tests,azure-devops,azure-pipelines,Rest,Automated Tests,Azure Devops,Azure Pipelines,TL;DR:如何通过API将发布与测试选项卡中可见的测试关联起来 我正在运行一个发布管道,它对正在部署的网站执行测试。测试生成文件(在我的测试代码中),我想使用DevOpsRESTAPI将这些文件附加到与发布相关联的测试报告中 注意:我在发布后将这些测试作为烟雾测试运行,作为发布管道的一部分,以便测试部署的网站。作为构建管道的一部分,这是不可能的 我可以,但我很难确定如何找到相关测试并附加文件 附加:中的链接似乎已更改,不再指向预期页面,但现在指向REST API的总体文档 目前,我认为这个过

TL;DR:如何通过API将发布与测试选项卡中可见的测试关联起来

我正在运行一个发布管道,它对正在部署的网站执行测试。测试生成文件(在我的测试代码中),我想使用DevOpsRESTAPI将这些文件附加到与发布相关联的测试报告中

注意:我在发布后将这些测试作为烟雾测试运行,作为发布管道的一部分,以便测试部署的网站。作为构建管道的一部分,这是不可能的

我可以,但我很难确定如何找到相关测试并附加文件

附加:中的链接似乎已更改,不再指向预期页面,但现在指向REST API的总体文档

目前,我认为这个过程应该是:

  • 获取发布详细信息
  • 获取测试运行id
  • 获取测试用例结果id
  • 创建测试结果附件

主要问题是从发布信息中获取
测试运行id
测试用例结果id

我想我做这件事有点晚了,但仍然是

关于这个过程,你是对的。可以通过访问版本内相应任务的日志来获取测试运行ID。以下是所需的端点:

 https://{organizationName}.vsrm.visualstudio.com/{projectName}/_apis/release/releases/{releaseID}/environments/{stageID}/deployPhases/{deployPhaseID}/tasks/{taskId}/logs
https://{organizationName}.vsrm.visualstudio.com/{projectName}/_apis/release/releases/{releaseId}?api-version=5.0
请注意,测试运行ID和测试ID仅在测试运行任务完成后可用

我建议通过访问azure devops提供的默认变量(例如,$(release.ReleaseId),直接从发布中获取发布ID、阶段ID和部署阶段ID,而不是通过API获取并按名称匹配,因为这需要时间,并且不会返回所有发布,只有100个一等的

在此之后,您需要获得任务ID。我发现通过任务名称查找它是可能的和适用的。只需通过API通过其ID获取版本,并使用此端点查找与所需名称匹配的任务:

 https://{organizationName}.vsrm.visualstudio.com/{projectName}/_apis/release/releases/{releaseID}/environments/{stageID}/deployPhases/{deployPhaseID}/tasks/{taskId}/logs
https://{organizationName}.vsrm.visualstudio.com/{projectName}/_apis/release/releases/{releaseId}?api-version=5.0
通过所有的部署步骤、部署阶段和部署作业来获取任务名称有点麻烦,但这是可能的(我使用了LINQ)

在获得这4个基本ID之后,您现在可以获得运行测试任务的日志。在收到的日志中,我使用正则表达式提取测试运行ID。然后,有了测试运行ID,您可以获取测试运行结果列表:

https://{organizationName}.visualstudio.com/{projectName}/_apis/test/runs/{testRunId}/results
若要将某些文件附加到测试,您需要此测试的AzDo ID。如何获取它?嗯,我可以考虑按名称映射测试(您需要事先存储这些测试的列表),然后循环访问获取的测试结果和存储的列表。找到匹配项后,获取相应的id,并附加所需的任何内容:

https://{organizationName}.visualstudio.com/{projectName}/_apistest/Runs/{testRunId}/Results/{testId}/attachments?api-version=6.1-preview.1