Нужна поддержка для повторного запуска неудачных тестов в конвейере TFS CI / CD: Powershell - PullRequest
0 голосов
/ 29 октября 2019

Мы разработали микросервис для автоматизации тестирования в нашем проекте. В настоящее время мы выполняем тестовые случаи, вызывая микро-сервис: используя сценарий Powershell во время процесса сборки TFS.

Здесь мне требуется небольшая помощь для повторного запуска только неудачных тестовых случаев с приведенным ниже сценарием Powershell. Пожалуйста, предложите и поддержите нас.

наш образец кода:

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 

$runURL = APIURL + 'run/' + Project

Write-Host "startings tests for ["api"] using url [$runURL]"



try {
    Write-Host "Invoke-WebRequest - [$runURL]"
    $response = Invoke-WebRequest -UseBasicParsing -Uri $runURL
    Write-Host "Invoke-WebRequest - [$runURL]"                
    $sessionID = $response.Content
    Write-Host "sessionID - [$sessionID.Content]"                
    $resultURL = APIURL + 'files/session/' + $sessionID.Replace("`"", "")
    Write-Host "resultURL [$resultURL] "
    $statusUrl = $response.Headers["Location"]
    Write-Host "statusUrl- [$statusUrl]"
}
catch {
    Write-host "failed to start test" -foregroundcolor Red
    exit 1;
}

$testResults = "$(System.DefaultWorkingDirectory)\TestResult-api.trx"

$i = 0 >$null 2>&1

while ($true) {
    $i++ >$null 2>&1

    $statusCode = 0

    try {
        $statusCode = (Invoke-WebRequest -UseBasicParsing -Uri $statusUrl -ErrorAction Continue).statuscode
    }
    catch {
        $statusCode = $_.Exception.Response.StatusCode.Value__
    }

    if ($statusCode -eq "204") {
        Write-host "tests completed in about" ($i * 5) "seconds" -foregroundcolor Blue
        Write-host "follow [$resultURL] to download test results" -foregroundcolor Gray

        try {
            Invoke-WebRequest -Uri $resultURL -OutFile $testResults
            if (!$testResults) {
                Write-Host "unable to read results" 
                exit 1
                break;
            }
        }
        catch {
            Write-Host "failed to download test results" 
            exit 1
            break;
        }

        $regex = 'outcome="[a-z]{0,10}" '
        $failed = select-string -Path $testResults -Pattern $regex -AllMatches | % { $_.Matches } | % { $_.Value } | Where-Object { $_ -notmatch 'Passed' }

        if ($failed -and $failed.Trim().length -ge 0) {
            Write-Error "tests failed" 
            break;
        }
        else {
            Write-Host "tests passed" -foregroundcolor Green
            break;
        }
    }
    elseif ($statusCode -eq "417") {
        Write-host "tests in progress" -foregroundcolor Blue

    }
    elseif ($statusCode -eq "404") {
        Write-Error "failed to find test result" 
        break;

    }
    elseif ($statusCode -eq "503") {
        Write-Error "test service error" 
        break;

    }
    else {
        Write-Error "unknown test error: $statusCode" 
        break;
    }

    start-sleep -s 5;

    if ($i -eq 240) {
        Write-Error "tests timed out" 
        break;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...