2 votes

Comment puis-je obtenir le nombre de tests échoués à partir de Invoke-Pester ?

J'ai quelques tests Pester qui s'exécutent bien dans la console, mais je voudrais exécuter les tests automatiquement et envoyer un message si un test échoue. J'ai lu que l'option -EnableExit permet à Invoke-Pester de renvoyer le nombre de tests ayant échoué. Mais chaque fois que j'utilise -EnableExit, la console powershell se ferme, qu'un test ait échoué ou non. Il s'agit de la version 4.7.3 de Pester. PSVersion 5.1.

Est Invoke-Pester -EnableExit censé fermer la coquille ?
Comment puis-je obtenir le nombre de tests échoués ?

fonctionne bien :
Invoke-Pester -Script D:\tmp\PowerShell\dummy1.Tests.ps1

ferme la fenêtre du shell :
Invoke-Pester -Script D:\tmp\PowerShell\dummy1.Tests.ps1 -EnableExit

Je m'attends à obtenir un nombre entier en sortie, mais la fenêtre de la console se ferme.

2voto

Mark Wragg Points 14918

Vous pouvez obtenir le nombre de tests ayant échoué en utilisant la fonction -PassThru allumer Invoke-Pester . Par exemple :

$TestResults = Invoke-Pester -PassThru

Mon $TestResults La variable a alors un FailedCount avec le nombre de tests qui ont échoué. Vous pouvez ensuite l'utiliser dans le cadre d'un pipeline pour que celui-ci échoue en cas d'échec des tests :

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

Voici un exemple des autres choses -PassThru retours :

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=}...}

1voto

Prasoon Karunan V Points 1977

Utilisez le -PassThru paramètre de commutation de Invoke-Pester

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

0voto

boxdog Points 4870

Vous pouvez obtenir le nombre de tests échoués en procédant ainsi :

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

Si vous souhaitez obtenir d'autres données (nombre de passages ou d'échecs, résultats de tests, etc.), vous devez transmettre la sortie à une variable, puis la traiter :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X