VSTS-将测试结果从构建发布到API端点

时间:2018-09-05 09:00:43

标签: azure-devops azure-pipelines azure-pipelines-build-task

我需要将测试结果(例如,通过/失败的测试数量)发布到报告api。我当时想将结果发布为xml,并添加一个powershell步骤以从xml文件中读取和提取信息,并向api发出发布请求。

enter image description here

有人尝试过这种方法吗?或者有更好的方法来实现同一件事?

谢谢!

2 个答案:

答案 0 :(得分:1)

如果您愿意托管其他服务,则可以将测试结果作为构建工件发布,并通过VSTS API进行访问,然后对其进行解析,然后将其发布到目标API https://docs.microsoft.com/en-us/rest/api/vsts/build/artifacts/get?view=vsts-rest-4.1

GET https://{accountName}.visualstudio.com/{project}/_apis/build/builds/{buildId}/artifacts?artifactName={artifactName}&api-version=4.1

如果您决定使用Powershell解析构建任务中的测试结果,则可以使用构建任务对目标API端点进行API调用。

答案 1 :(得分:0)

这就是我最终要做的。

enter image description here

我不需要任务“发布测试结果”,因为“测试程序集”任务已经在做。

由于我将xUnit用作测试框架,因此测试结果将以.trx文件形式发布。

我的powershell脚本看起来像这样。

[Reflection.Assembly]::LoadFile("$Env:BUILD_SOURCESDIRECTORY\<ProjectFolder>\Scripts\Newtonsoft.Json.dll")

$resultFiles = Get-ChildItem -Path ".\TestResults\*.trx"      

foreach ($resultFile in $resultFiles) {
    Write-Output $resultFile

    $data = [xml](Get-Content $resultFile)    
    $json = [Newtonsoft.Json.JsonConvert]::SerializeXmlNode($data)
    $json = $json -replace '"@', '"'

    Invoke-WebRequest -Uri "https://my-azure-function/api/VstsWebhook?buildId=$Env:BUILD_BUILDID&buildNumber=$Env:BUILD_BUILDNUMBER&code=<secret>" -Method POST -ContentType 'application/json' -Body $json
}

希望这会帮助处于相同情况的其他人。

相关问题