2017-01-02 3 views
1

情報をスラックに送信するpowershellを使用してレポートを作成する場合は、最後のTestRunIdを使用したいと思います。私は、チームサービスREST APIを使用してテスト結果を取得します。それは正常に動作しますが、特定の実行IDのみで動作します。TFSからpowershellスクリプトに最後のテスト実行IDを取得するにはどうすればいいですか

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

:私はTFSのREST APIに私のGET要求で使用することになり、最後のテスト結果IDを取得する方法を見つけることで、私がこだわっているenter link description here
:ここでは、良い例を見つけることができるリンクですだから私は運がない最後のテストランIDとして{ラン}を見つける。

誰でも知っていますか?私は、この状況でpowershellスクリプトで使用できるクエリ言語を見つけることはできません。

+0

[実行API](https://www.visualstudio.com/en-us/docs/integrate/api/test/runs)からIDを取得できますか? –

+0

もちろん、Luca Cappaの答えは完璧でした! – BodiDani

答えて

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を使用しています。

+0

あなたの素晴らしい答えをありがとう!私はあなたが提供したその情報があったTFS APIに関するドキュメントを見つけられませんでした:テスト結果を要求するためのUriは、具体的なRunIDなしで使用でき、baを与え​​ることができます:) – BodiDani

関連する問題