如何从TFS到我的powershell脚本获取最后一次测试运行ID

时间:2017-01-02 10:06:10

标签: rest api powershell tfs azure-devops

我想使用最后一个TestRunId,以便通过powershell创建报告,将信息发送给Slack。我使用Team Services REST API来获取测试结果。它工作正常但只有特定的运行ID。这是一个链接,您可以在其中找到很好的示例:enter link description here
我一直想找到一种方法来获取最后一个测试结果ID,我将在我的GET请求中使用TFS REST API:

Invoke-RestMethod -Uri "https://{instance}/DefaultCollection/{project}/_apis/test/runs/{run}/results?api-version={version}[&detailsToInclude={string}&$skip={int}&$top={int}]"

所以我发现{run}是最后一个没有运气的Test Run ID。

有人有想法吗?我无法找到任何可以在powershell脚本中使用的查询语言。

1 个答案:

答案 0 :(得分:4)

您可以检索测试运行列表,这是对ID的结果降序排序,因为最近的测试运行具有最大的ID。然后得到结果的第一项。所有这些都显示在powershell中:

$username = "doesnotmatter" 
$token = "PUTYOURTOKEN_HERE" 
$instance = "PUTYOURACCOUNTHERE.visualstudio.com" 
$teamProjectName = "PUTHEREYOUR_TEAM_PROJECT_NAME"

#create auth header to use for REST calls 
$accessToken = ("{0}:{1}" -f $username,$token) 
$accessToken = [System.Text.Encoding]::UTF8.GetBytes($accessToken) 
$accessToken = [System.Convert]::ToBase64String($accessToken) 
$headers = @{Authorization=("Basic {0}" -f $accessToken)} 

$testRuns = Invoke-RestMethod -Uri "https://$instance/defaultcollection/$(teamProjectName)/_apis/test/runs/?api-version=3.0-preview" -Headers $headers -Method Get 

$testRunsIdSorted = $testRuns.value | sort-object id -Descending

$mostRecentTestRun = Invoke-RestMethod -Uri "https://$instance/defaultcollection/$(teamProjectName)/_apis/test/runs/$($testRunsIdSorted[0].id)?api-version=3.0-preview" -Headers $headers -Method Get 

$mostRecentTestRun现在是最近的测试运行。 请注意,该脚本根本不进行错误检查。 请注意,对于身份验证,脚本使用的Personal Access Token至少需要具有测试管理(读取)范围。