VSTS - Тест -> Выполнения -> Конечная точка запроса не фильтруется по параметрам - PullRequest
0 голосов
/ 27 апреля 2018

Я пытаюсь использовать конечную точку Test -> Runs -> Query, чтобы получить список тестовых прогонов для определенного выпуска, как подробно здесь

К сожалению, что бы я ни указывал в качестве параметра запроса (за исключением $top, который, по-видимому, фильтруется), мне кажется, что каждый тестовый запуск возвращается для проекта.

Например, я знаю, что есть 14 тестовых прогонов для определенного выпуска.

enter image description here

Я могу получить свой идентификатор выпуска по следующему запросу ...

https://smartassessor.vsrm.visualstudio.com/Smart End Point Assessment/_apis/release/releases?searchText=Release-103

Если я тогда попытаюсь использовать этот идентификатор в запросе запуска теста, как это ...

https://smartassessor.visualstudio.com/Smart End Point Assessment/_apis/test/runs?releaseIds=1678&api-version=5.0-preview.2

Я получил 529 результатов, что похоже на то, что большинство тестовых прогонов повторяет проект.

Работают ли фильтры с этой конечной точкой? Если да, то как мне настроить мой запрос на использование параметра releaseIds.

Спасибо

1 Ответ

0 голосов
/ 30 апреля 2018

Я могу воспроизвести эту проблему. Похоже, API пока недоступны.

Существует проблема, представленная здесь для отслеживания этого. Вы также можете отслеживать обновления на нем.

В качестве обходного пути нижеприведенный сценарий PowerShell можно использовать для фильтрации прогонов теста по идентификатору выпуска: (в качестве альтернативы вы можете экспортировать результат в *. CSV файл)

Param(
   [string]$collectionurl = "https://{account}.visualstudio.com", 
   [string]$project = "ProjectName",
   [string]$releaseid = "1",
   [string]$user = "username",
   [string]$token = "password"
)

#Set the path and name for the output csv file
$path = "D:\temp"
$filename = "ReleaseTestRun" + "-" + $releaseid


# Base64-encodes the Personal Access Token (PAT) appropriately
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $user,$token)))

$baseUrl = "$collectionurl/$project/_apis/test/runs"
$response = Invoke-RestMethod -Uri $baseUrl -Method Get -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)}
$testruns = $response.value 
Write-Host $results

$Releaseruns = @()

foreach ($testrun in $testruns)
{
$testrunID = $testrun.id
$runbaseUrl = "$collectionurl/$project/_apis/test/runs/$testrunID"
$runresponse = Invoke-RestMethod -Uri $runbaseUrl -Method Get -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} | Where {$_.release.id -eq $releaseid} #| Filter the test run by Release ID

$customObject = new-object PSObject -property @{
          "id" = $runresponse.id
          "name" = $runresponse.name
          "url" = $runresponse.url
          "isAutomated" = $runresponse.isAutomated
          "state" = $runresponse.state
          "totalTests" = $runresponse.totalTests
          "incompleteTests" = $runresponse.incompleteTests
          "notApplicableTests" = $runresponse.notApplicableTests
          "passedTests" = $runresponse.passedTests
          "unanalyzedTests" = $runresponse.unanalyzedTests
          "revision" = $runresponse.revision
          "webAccessUrl" = $runresponse.webAccessUrl
        } 

    $Releaseruns += $customObject
}

$Releaseruns | Select `
                id,
                name,
                url,
                isAutomated,
                state,
                totalTests,
                incompleteTests,
                notApplicableTests,
                passedTests,
                unanalyzedTests,
                revision,
                webAccessUrl | where {$_.id -ne $Null} #|export-csv -Path $path\$filename.csv -NoTypeInformation # Filter non-empty values and export to csv file.

enter image description here

...