Executing a Testsuite from PowerShell (Deprecated)
This article is getting obsolete because using the BiG EVAL PowerShell module is recommended. See Example: Running a test suite
Deprecated way:
Use the following PowerShell-Skript to execute a testsuite and to receive the testresults.
To run the script it’s important to create an Api Client first. See this article to get to know how it’s done.
# Enter the base-url of the BiG EVAL API and instance
$bigevalUrl = "https://localhost:1703/"
$baseUrl = $bigevalUrl+"api/v1/default/"
Write-Host $baseUrl;
# Enter the ID of the suite to execute (get it from the URL when the suite is open in the UI)
$suiteId = 1
# Enter the ID of the test to check later
$testId = 8
# Enter the Client ID of the API Client.
$clientId = "e01b7ba2dd930ea97da79b0005341aaa"
# Enter the Client Secret of the API Client.
$clientSecret = "5d1b205aae2d4fec90d424469abcd8ac"
# Acquire OAuth2 Access-Token
[string]$accessToken = $null
try {
$tokenEndpoint = $bigevalUrl+"connect/token"
$authBody = "grant_type=client_credentials&scope=bigeval-api-v1&client_id=" + $clientId + "&client_secret=" + $clientSecret
$authResponse = Invoke-RestMethod -Uri $tokenEndpoint -Method POST -Body $authBody
$accessToken = $authResponse.access_token
$accessTokenExpiresAt = (Get-Date).AddSeconds($authResponse.expires_in)
Write-Host "OAuth Token Request successful"
Write-Host " Token expires at:" $accessTokenExpiresAt
} catch {
Write-Host "OAuth Token Request failed"
Write-Host " StatusCode:" $_.Exception.Response.StatusCode.value__
Write-Host " StatusDescription:" $_.Exception.Response.StatusDescription
}
# Execute the suite. This creates a new run
$executeResult = Invoke-RestMethod -Uri ($baseUrl + "suites/" + $suiteId + "/execute") -Headers @{"Authorization"="Bearer $accessToken"}
Write-Host "Suite started"
# Poll the status of the run until it finishes
do
{
# Wait a specific amount of time until polling
Start-Sleep -Milliseconds 5000
# Fetch the status and testresults
$currentResponse = Invoke-RestMethod -Uri ($baseUrl + "statistics/testresultsscoped?runScope=3&runScopeIdentifier=" + $suiteId + "&skip=0&take=1") -Headers @{"Authorization"="Bearer $accessToken"}
$currentResult = $currentResponse.items[0]
# Write the run-status to the console
Write-Host $currentResult.status
} while($currentResult.status -ne "FINISHED")
# Write some statistics to the console
Write-Host ("Run-ID: " + $currentResult.runId)
Write-Host ("Tests run: " + $currentResult.totalCount)
Write-Host ("Tests succeeded: " + $currentResult.succeededCount)
Write-Host ("Tests failed: " + $currentResult.failedCount)
Write-Host ("Tests excepted: " + $currentResult.exceptionsCount)
Write-Host ("Success-Rate: " + ($currentResult.succeededCount / $currentResult.totalCount * 100) + "%")
# Get testresults of a specific test
$runId = $currentResult.runId
$runResults = Invoke-RestMethod -Uri ($baseUrl + "runs/" + $runId + "/testresults?search=%23" + $testId + "&status=SUCCESS,FAILED,EXECUTING,NOTEVALUATED,DIFFERENTDIMENSIONALITY,CANCELED,NOTENOUGHPROBES,EXCEPTION&sortBy=&skip=0&take=10") -Headers @{"Authorization"="Bearer $accessToken"}
# Write all test-results (could be multiple) to the console
$runResults.items | ForEach-Object {
Write-Host
Write-Host ("Test-ID: " + $_.testId)
Write-Host ("Test-Name: " + $_.testName)
Write-Host ("Test-Status: " + $_.status)
}
# Return exit-code depending on the test-result
if($currentResult.failedCount -eq 0)
{
exit 0
}
else
{
exit -1
}