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

标签 rest api powershell tfs azure-devops

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

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

所以我发现 {run} 作为最后一个测试运行 ID,但运气不佳。

有人有想法吗?我在 powershell 脚本中找不到任何可以在这种情况下使用的查询语言。

最佳答案

您可以检索测试运行列表,按 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至少需要具有测试管理(读取)范围。

关于rest - 如何将最后一次测试运行 ID 从 TFS 获取到我的 powershell 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41424694/

相关文章:

c# - 是否有使用 basicHttpBinding 扩展 WCF 服务以允许 REST 服务与 JSON 通信的好方法?

java - Jersey - Spring 3 Autowiring (NoClassDefFoundError : EnvironmentAware)

api - Last.fm geo.getEvents 返回无效方法 - 此包中没有具有该名称的方法

php - Facebook stream.publish 的先决条件是什么?

Javascript:如何获得下载进度?

rest - 使用 REST api 进行身份验证后 Zeppelin 重新启动解释器

javascript - 如何从数组中删除 json 元素?

powershell - 为 nuget 创建自定义 powershell 脚本,将自定义目标添加到 csproj BeforeBuild 步骤

powershell - 在powershell中定义字符串的单引号和双引号有什么区别

powershell - 是否可以在Windows 10 Pro 1511版上将PowerShell 5.0升级到5.1?