我有一些作为天蓝色发布管道的一部分运行的自动化测试,并试图将一个版本的输出结果与另一个版本进行比较。整体测试总结给出了通过率等的良好总体指示
但我特别尝试比较哪些测试在特定版本中开始失败,与早期版本中可能已经通过的测试进行比较。
目前我必须手动比较版本之间失败的测试,这不是一个正式的方法。
有谁知道是否有办法比较两个不同版本之间的特定测试结果?
恐怕没有现成的方法可以支持比较两个不同版本之间的特定测试结果。
目前,Azure DevOps 中没有内置功能或扩展可以比较不同版本之间的特定测试信息。
作为解决方法,您可以考虑使用 Rest API 获取发布管道的测试结果进行比较。
以下是 Rest API:
获取发布测试ID:
Get https://vstmr.dev.azure.com/{Org}/{Project}/_apis/testresults/resultdetailsbyrelease?releaseId={release id}&releaseEnvId={release environment id}&api-version=5.2-preview.1
这是脚本示例:
$token = "PAT"
$releaseId1 = releaseid1
$releaseEnvId1 = env1
$releaseId2 = releaseid2
$releaseEnvId2 = env2
$organizationame = "orgname"
$projectname ="projectname"
$testnames = @("testmethodname1","testmethod2")
#checkrelease1
$url="https://vstmr.dev.azure.com/$($organizationame)/$($projectname)/_apis/testresults/resultdetailsbyrelease?releaseId=$($releaseId1)&releaseEnvId=$($releaseEnvId1)&api-version=5.2-preview.1"
$token = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($token)"))
$response = Invoke-RestMethod -Uri $url -Headers @{Authorization = "Basic $token"} -Method Get -ContentType application/json
$testresultID = $response.resultsForGroup[0].results[0].id
$testrunID = $response.resultsForGroup[0].results[0].testrun.id
$urlgettestdetails = "https://dev.azure.com/$($organizationame)/$($projectname)/_apis/test/Runs/$($testrunID)/results/$($testresultID)?api-version=7.1-preview.6"
$responsegettestdetails = Invoke-RestMethod -Uri $urlgettestdetails -Headers @{Authorization = "Basic $token"} -Method Get -ContentType application/json
foreach($testname in $testnames)
{
foreach($testresult in $responsegettestdetails)
{
if($testresult.testcase.name -eq $testname)
{
echo "The testmethod:$testname is $($testresult.outcome) in releaseID: $releaseId1"
}
}
}
#checkrelease2
$url1="https://vstmr.dev.azure.com/$($organizationame)/$($projectname)/_apis/testresults/resultdetailsbyrelease?releaseId=$($releaseId2)&releaseEnvId=$($releaseEnvId2)&api-version=5.2-preview.1"
$response1 = Invoke-RestMethod -Uri $url1 -Headers @{Authorization = "Basic $token"} -Method Get -ContentType application/json
$testresultID = $response1.resultsForGroup[0].results[0].id
$testrunID = $response1.resultsForGroup[0].results[0].testrun.id
$urlgettestdetails2 = "https://dev.azure.com/$($organizationame)/$($projectname)/_apis/test/Runs/$($testrunID)/results/$($testresultID)?api-version=7.1-preview.6"
$responsegettestdetails2 = Invoke-RestMethod -Uri $urlgettestdetails2 -Headers @{Authorization = "Basic $token"} -Method Get -ContentType application/json
foreach($testname in $testnames)
{
foreach($testresult in $responsegettestdetails2)
{
if($testresult.testcase.name -eq $testname)
{
echo "The testmethod:$testname is $($testresult.outcome) in releaseID: $releaseId2"
}
}
}
您可以根据您的需求更改比较内容。
另一方面,您可以使用仪表板中的测试结果趋势小组件来监控版本之间的变化。
我完全理解您的要求。您可以在网站:开发者社区提交建议票来报告此功能。