如何从 Invoke-Pester 获取失败测试的数量?
How can I get the numer of failed tests from Invoke-Pester?
我在控制台中进行了一些 Pester 测试 运行,但我希望自动 运行 测试并在任何测试失败时发送消息。我读到选项 -EnableExit 导致 Invoke-Pester return 失败测试的数量。但是每当我使用 -EnableExit 时,无论测试是否失败,powershell 控制台都会关闭。它是 Pester 版本 4.7.3。 PSVersion 5.1.
Invoke-Pester -EnableExit
应该关闭 shell 吗?
我如何获得失败测试的数量?
运行很好:
Invoke-Pester -Script D:\tmp\PowerShell\dummy1.Tests.ps1
关闭 shell window:
Invoke-Pester -Script D:\tmp\PowerShell\dummy1.Tests.ps1 -EnableExit
我希望得到一个整数作为输出,但是控制台 window 关闭了。
使用Invoke-Pester
的-PassThru
开关参数
$Result = Invoke-Pester -Script C:\temp\test.tests.ps1 -PassThru
$Result
$Result.FailedCount
您可以通过在 Invoke-Pester
上使用 -PassThru
开关来获取失败测试的数量。例如:
$TestResults = Invoke-Pester -PassThru
我的 $TestResults
变量然后有一个 FailedCount
属性,其中包含失败的测试数。然后,您可以将其用作管道的一部分,以便在测试失败时使管道失败:
If ($TestResults.FailedCount -gt 0) { Throw "There were $($TestResults.FailedCount) failed tests" }
这是其他事情的例子-PassThru
returns:
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=}...}
您可以通过这样做来获得失败测试的数量:
(Invoke-Pester -Path D:\tmp\PowerShell\dummy1.Tests.ps1 -PassThru -Show None).FailedCount
如果你想要其他数据(passed/skipped计数、测试结果等),然后将输出传递给一个变量,然后进一步处理:
$testResults = Invoke-Pester -Path D:\tmp\PowerShell\dummy1.Tests.ps1 -PassThru -Show None
我在控制台中进行了一些 Pester 测试 运行,但我希望自动 运行 测试并在任何测试失败时发送消息。我读到选项 -EnableExit 导致 Invoke-Pester return 失败测试的数量。但是每当我使用 -EnableExit 时,无论测试是否失败,powershell 控制台都会关闭。它是 Pester 版本 4.7.3。 PSVersion 5.1.
Invoke-Pester -EnableExit
应该关闭 shell 吗?
我如何获得失败测试的数量?
运行很好:
Invoke-Pester -Script D:\tmp\PowerShell\dummy1.Tests.ps1
关闭 shell window:
Invoke-Pester -Script D:\tmp\PowerShell\dummy1.Tests.ps1 -EnableExit
我希望得到一个整数作为输出,但是控制台 window 关闭了。
使用Invoke-Pester
-PassThru
开关参数
$Result = Invoke-Pester -Script C:\temp\test.tests.ps1 -PassThru
$Result
$Result.FailedCount
您可以通过在 Invoke-Pester
上使用 -PassThru
开关来获取失败测试的数量。例如:
$TestResults = Invoke-Pester -PassThru
我的 $TestResults
变量然后有一个 FailedCount
属性,其中包含失败的测试数。然后,您可以将其用作管道的一部分,以便在测试失败时使管道失败:
If ($TestResults.FailedCount -gt 0) { Throw "There were $($TestResults.FailedCount) failed tests" }
这是其他事情的例子-PassThru
returns:
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=}...}
您可以通过这样做来获得失败测试的数量:
(Invoke-Pester -Path D:\tmp\PowerShell\dummy1.Tests.ps1 -PassThru -Show None).FailedCount
如果你想要其他数据(passed/skipped计数、测试结果等),然后将输出传递给一个变量,然后进一步处理:
$testResults = Invoke-Pester -Path D:\tmp\PowerShell\dummy1.Tests.ps1 -PassThru -Show None