使用 Azure DevOps REST API 进行构建测试 运行
Getting Tests Run on Build with Azure DevOps REST APIs
是否有 REST API 用于获取构建的测试数量 run/failed?
我看到有一个用于获取 Code Coverage,但除非我遗漏了一些明显的东西,否则我找不到一个 API 来获取构建的测试数量 运行。
看起来所有可获得测试结果的 API 都需要测试 运行id,但我只有 buildid.
我不确定是否有专门用于测试的端点,但您可以从日志中获取测试
$AzureDevOpsAuthenicationHeader = @{Authorization = 'Basic ' + [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(":$(System.AccessToken)")) }
$uri = "https://dev.azure.com/$(devopsAccount)/$(projectName)/_apis/build/builds/$(Build.BuildId)/logs/$(logId)?api-version=5.1"
Write-Host $uri
# Invoke the REST call
$result = Invoke-RestMethod -Uri $uri -Method Get -Headers $AzureDevOpsAuthenicationHeader
Write-Host $result
$lines = $result.Split([Environment]::NewLine)
$passed = 0;
$failed = 0;
foreach($line in $lines) {
if ($line -match "Passed:.(\d+)") {
$passed = $matches[1]
}
if ($line -match "Failed:.(\d+)") {
$failed = $matches[1]
}
}
echo $passed
echo $failed
您需要传递您的构建 ID 和日志 ID。要获取日志 ID,请获取所有日志并浏览它们并找到具有测试任务的那个。
buildId 和 runId 是一样的。我的意思是 buildId = runId。使用更新的语法,术语发生了变化。
你应该尝试使用 Runs - Query API。传递可选的构建 ID。
GET https://dev.azure.com/{organization}/{project}/_apis/test/runs?minLastUpdatedDate={minLastUpdatedDate}&maxLastUpdatedDate={maxLastUpdatedDate}&buildIds={buildIds}&api-version=6.0
值得注意的是,您可以通过在管道的任务步骤上设置来自定义 运行 的标题(包括内部版本号)。
您可以使用 Matt 提到的 Runs Query Api。但是我发现 buildId
查询参数可能不起作用。您可能需要按 buildId 过滤 api 结果。请参阅以下示例:
$connectionToken="Personal Access Token"
$base64AuthInfo= [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($connectionToken)"))
$url = "https://dev.azure.com/{organization}/{project}/_apis/test/runs?minLastUpdatedDate=2020-10-20&maxLastUpdatedDate=2020-10-22&api-version=6.0"
$results= Invoke-RestMethod -Uri $trurl -Headers @{authorization = "Basic $base64AuthInfo"} -Method Get
$run = $results.value | Where-Object{$_.buildConfiguration.id -eq $buildId}
$runId = $run.id
您也可以查看 Runs List Api。我发现 buildId 总是附加到 运行 标题。您可以按 运行 名称筛选 api 结果。见下文:
$connectionToken="Personal Access Token"
$base64AuthInfo= [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($connectionToken)"))
$url = "https://dev.azure.com/{organization}/{project}/_apis/test/runs?api-version=6.0"
$results= Invoke-RestMethod -Uri $trurl -Headers @{authorization = "Basic $base64AuthInfo"} -Method Get
$run = $results.value | Where-Object{$_.name -match $buildId}
$runId = $run.id
是否有 REST API 用于获取构建的测试数量 run/failed?
我看到有一个用于获取 Code Coverage,但除非我遗漏了一些明显的东西,否则我找不到一个 API 来获取构建的测试数量 运行。
看起来所有可获得测试结果的 API 都需要测试 运行id,但我只有 buildid.
我不确定是否有专门用于测试的端点,但您可以从日志中获取测试
$AzureDevOpsAuthenicationHeader = @{Authorization = 'Basic ' + [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(":$(System.AccessToken)")) }
$uri = "https://dev.azure.com/$(devopsAccount)/$(projectName)/_apis/build/builds/$(Build.BuildId)/logs/$(logId)?api-version=5.1"
Write-Host $uri
# Invoke the REST call
$result = Invoke-RestMethod -Uri $uri -Method Get -Headers $AzureDevOpsAuthenicationHeader
Write-Host $result
$lines = $result.Split([Environment]::NewLine)
$passed = 0;
$failed = 0;
foreach($line in $lines) {
if ($line -match "Passed:.(\d+)") {
$passed = $matches[1]
}
if ($line -match "Failed:.(\d+)") {
$failed = $matches[1]
}
}
echo $passed
echo $failed
您需要传递您的构建 ID 和日志 ID。要获取日志 ID,请获取所有日志并浏览它们并找到具有测试任务的那个。
buildId 和 runId 是一样的。我的意思是 buildId = runId。使用更新的语法,术语发生了变化。
你应该尝试使用 Runs - Query API。传递可选的构建 ID。
GET https://dev.azure.com/{organization}/{project}/_apis/test/runs?minLastUpdatedDate={minLastUpdatedDate}&maxLastUpdatedDate={maxLastUpdatedDate}&buildIds={buildIds}&api-version=6.0
值得注意的是,您可以通过在管道的任务步骤上设置来自定义 运行 的标题(包括内部版本号)。
您可以使用 Matt 提到的 Runs Query Api。但是我发现 buildId
查询参数可能不起作用。您可能需要按 buildId 过滤 api 结果。请参阅以下示例:
$connectionToken="Personal Access Token"
$base64AuthInfo= [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($connectionToken)"))
$url = "https://dev.azure.com/{organization}/{project}/_apis/test/runs?minLastUpdatedDate=2020-10-20&maxLastUpdatedDate=2020-10-22&api-version=6.0"
$results= Invoke-RestMethod -Uri $trurl -Headers @{authorization = "Basic $base64AuthInfo"} -Method Get
$run = $results.value | Where-Object{$_.buildConfiguration.id -eq $buildId}
$runId = $run.id
您也可以查看 Runs List Api。我发现 buildId 总是附加到 运行 标题。您可以按 运行 名称筛选 api 结果。见下文:
$connectionToken="Personal Access Token"
$base64AuthInfo= [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($connectionToken)"))
$url = "https://dev.azure.com/{organization}/{project}/_apis/test/runs?api-version=6.0"
$results= Invoke-RestMethod -Uri $trurl -Headers @{authorization = "Basic $base64AuthInfo"} -Method Get
$run = $results.value | Where-Object{$_.name -match $buildId}
$runId = $run.id