我正在使用TFS 2015来构建,部署和运行我的selenium UI测试。 它对我来说很好。我对不同的客户也有不同的构建定义(这里运行的测试是相同的,但它们针对不同的dbs运行)。
我的测试每晚和早上运行我必须单独去每个构建定义以查看结果(我收到一封邮件,其中包含测试失败和通过的数量)。 但要查看哪个测试失败以及其他详细信息,例如失败的原因,我每次都需要在服务器上进行TFS构建def。
我打算制作一个简单的应用程序,它会将我的数据显示在一个地方,就像一个简单的MVC网络应用程序(内部用途)。到目前为止,我只能通过使用
来获取构建的简单数据,如名称和结果cn=users,dc=domname,dc=com
但是我无法获得测试运行的详细信息和事件,任何人都可以建议我使用哪个API来实现这一点并以更简单的形式显示数据。
我得到了这个链接,但我不确定如何在我的应用程序中使用它。 https://www.visualstudio.com/en-us/docs/integrate/api/test/results
谢谢,
Amey
答案 0 :(得分:1)
您可以使用REST API(上面提到的链接)获取特定项目的测试结果
例如,在PowerShell脚本示例下面可以获取特定项目的所有失败测试结果,也可以导出到 .csv 文件,然后在Excel中打开它以过滤后:
Param(
[string]$collectionurl = "http://server:8080/tfs/Collection",
[string]$project = "ProjectName",
[string]$user = "username",
[string]$token = "password"
)
# Base64-encodes the Personal Access Token (PAT) appropriately
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $user,$token)))
#Get test runs
$testrunsUrl = "$collectionurl/$project/_apis/test/runs?api-version=1.0"
$testruns = (Invoke-RestMethod -Uri $testrunsUrl -Method Get -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)}).value
#Get unit tests from each test run
$UnitTestResults = @()
foreach ($testrun in $testruns)
{
$testrunID = $testrun.id
#Get test results for specific test run
$baseUrl = "$collectionurl/$project/_apis/test/runs/$testrunID/results?api-version=3.0-preview"
$response = Invoke-RestMethod -Uri $baseUrl -Method Get -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)}
$unittests = $response.value | where({$_.outcome -eq 'Failed'})
$customObject = new-object PSObject -property @{
"ComputerName" = @($unittests.computerName -join ',')|Select-Object
"BuildId" = @($unittests.build.id -join ',')|Select-Object
"BuildName" = @($unittests.build.name -join ',')|Select-Object
"BuildUrl" = @($unittests.build.url -join ',')|Select-Object
"TestRunID" = $testrunID
"ProjectName" = @($unittests.project.name -join ',')|Select-Object
"TestRunName" = @($unittests.testRun.name -join ',')|Select-Object
"TestRunURL" = @($unittests.testRun.url -join ',')|Select-Object
"UnitTestname" = @($unittests.automatedTestName -join ',')|Select-Object
"outcome" = @($unittests.outcome -join ',')|Select-Object
"errorMessage" = @($unittests.errorMessage -join ',')|Select-Object
"TestResultsUrl" = @($unittests.url -join ',')|Select-Object
"completedDate" = @($unittests.completedDate -join ',')|Select-Object
}
$UnitTestResults += $customObject
}
$UnitTestResults | Select `
ProjectName,
ComputerName,
BuildId,
BuildName,
BuildUrl,
TestRunID,
TestRunName,
TestRunURL,
UnitTestname,
outcome,
errorMessage,
TestResultsUrl,
completedDate | where({$_.outcome -like '*Failed*'}) #|export-csv -Path C:\LC\UnitTest.csv -NoTypeInformation
您也可以使用TFS API来实现这一目标。 构建的测试结果存储在测试运行中,因此您需要首先获取构建的测试运行,然后从测试运行中检索测试结果。
您可以参考以下主题:
答案 1 :(得分:0)
这是一个PowerShell脚本,用于从TFS 2018 rest API获取结果,该API运行多个selenium测试,作为使用TFS Release Management的UI测试运行。您可以更改API版本号以支持TFS 2015并简化以下脚本以访问和通过电子邮件发送测试结果。在脚本中,我考虑了多个发布环境,因为我在TFS版本管理中使用它。该脚本具有任务ID 7的硬编码访问权限,以查找发布环境的状态。删除此示例中的这些步骤并简化它以与构建一起使用。 您可以在PowerShell构建任务中将PowerShell作为内联脚本执行。
window.onbeforeunload = function () {
return "Hi";
};