Как я могу получить количество неудачных тестов от Invoke-Pester? - PullRequest
1 голос
/ 12 апреля 2019

У меня в консоли работает несколько тестов Пестера, но я хотел бы запустить тесты автоматически и отправить сообщение, если какой-либо тест не пройден.Я прочитал параметр -EnableExit, заставляющий Invoke-Pester возвращать количество неудачных тестов.Но всякий раз, когда я использую -EnableExit, консоль powershell закрывается, независимо от того, не прошел ли тест.Это версия Pester 4.7.3.PSVersion 5.1.

Предполагается ли Invoke-Pester -EnableExit закрыть оболочку?
Как узнать количество неудачных тестов?

работает нормально:
Invoke-Pester -Script D:\tmp\PowerShell\dummy1.Tests.ps1

закрывает окно оболочки:
Invoke-Pester -Script D:\tmp\PowerShell\dummy1.Tests.ps1 -EnableExit

Я ожидаю получить целое число в качестве вывода, но окно консоли закрывается.

Ответы [ 3 ]

1 голос
/ 12 апреля 2019

Количество неудачных тестов можно узнать с помощью переключателя -PassThru на Invoke-Pester. Например:

$TestResults = Invoke-Pester -PassThru

Моя переменная $TestResults имеет свойство FailedCount с количеством неудачных тестов. Затем вы можете использовать это как часть конвейера для сбоя конвейера в случае неудачных тестов:

If ($TestResults.FailedCount -gt 0) { Throw "There were $($TestResults.FailedCount) failed tests" }

Вот пример других вещей, которые -PassThru возвращает:

TagFilter         :
ExcludeTagFilter  :
TestNameFilter    :
ScriptBlockFilter :
TotalCount        : 230
PassedCount       : 229
FailedCount       : 1
SkippedCount      : 0
PendingCount      : 0
InconclusiveCount : 0
Time              : 00:00:43.8675480
TestResult        : {@{ErrorRecord=; ParameterizedSuiteName=; Describe=Testing all Modules against default
                    PSScriptAnalyzer rule-set; Parameters=System.Collections.Specialized.OrderedDictionary;
                    Passed=True; Show=All; FailureMessage=; Time=00:00:00.7463377; Name=passes the PSScriptAnalyzer
                    Rule PSAlignAssignmentStatement; Result=Passed; Context=Testing Module
                    'C:\Users\wragg\github\PowerShell-Subnet\Subnet\Subnet.psm1'; StackTrace=}, @{ErrorRecord=;
                    ParameterizedSuiteName=; Describe=Testing all Modules against default PSScriptAnalyzer rule-set;
                    Parameters=System.Collections.Specialized.OrderedDictionary; Passed=True; Show=All;
                    FailureMessage=; Time=00:00:02.2605400; Name=passes the PSScriptAnalyzer Rule
                    PSAvoidUsingCmdletAliases; Result=Passed; Context=Testing Module
                    'C:\Users\wragg\github\PowerShell-Subnet\Subnet\Subnet.psm1'; StackTrace=}, @{ErrorRecord=;
                    ParameterizedSuiteName=; Describe=Testing all Modules against default PSScriptAnalyzer rule-set;
                    Parameters=System.Collections.Specialized.OrderedDictionary; Passed=True; Show=All;
                    FailureMessage=; Time=00:00:00.0865224; Name=passes the PSScriptAnalyzer Rule
                    PSAvoidAssignmentToAutomaticVariable; Result=Passed; Context=Testing Module
                    'C:\Users\wragg\github\PowerShell-Subnet\Subnet\Subnet.psm1'; StackTrace=}, @{ErrorRecord=;
                    ParameterizedSuiteName=; Describe=Testing all Modules against default PSScriptAnalyzer rule-set;
                    Parameters=System.Collections.Specialized.OrderedDictionary; Passed=True; Show=All;
                    FailureMessage=; Time=00:00:00.0590095; Name=passes the PSScriptAnalyzer Rule
                    PSAvoidDefaultValueSwitchParameter; Result=Passed; Context=Testing Module
                    'C:\Users\wragg\github\PowerShell-Subnet\Subnet\Subnet.psm1'; StackTrace=}...}
0 голосов
/ 12 апреля 2019

Вы можете получить только количество неудачных тестов, выполнив это:

(Invoke-Pester -Path D:\tmp\PowerShell\dummy1.Tests.ps1 -PassThru -Show None).FailedCount

Если вам нужны другие данные (количество пропущенных / пропущенных, результаты тестов и т. Д.), Затем передайте вывод в переменную,затем обработайте дальше:

$testResults = Invoke-Pester -Path D:\tmp\PowerShell\dummy1.Tests.ps1 -PassThru -Show None

0 голосов
/ 12 апреля 2019

Используйте параметр переключателя -PassThru Invoke-Pester

$Result = Invoke-Pester -Script C:\temp\test.tests.ps1 -PassThru
$Result
$Result.FailedCount
...