如何在Invoke-Pester命令期间在PowerShell脚本中动态创建和添加标记



我在一个名为Behavior.tests.ps1的ps1文件中有几个Describe/It测试。然而,每个测试只能在具有特定硬件的系统上成功运行。我知道我可以在InvokePester命令中使用这样的标签:

Invoke-Pester $path -Tag "Acceptance" -ExcludeTag "Flaky", "Slow", "LinuxOnly"

但我不能指望用户知道他们硬件的细节,并选择正确的-Tag和-ExcludeTag。我更愿意为我的工作流程做的是简单地设置Invoke-Pester .Behavior.Tests.ps1,然后在脚本中设置这样的代码,以获取硬件信息并构建正确的Tags和ExcludeTags:列表

if ($currentHardware -in $HardwareList) {
$ExcludeTag += $TagFlaky
}

然后,在第一个描述/It之前,我会有一个标签和ExcludeTags的列表,它将在整个ps1文件中运行正确的测试。这在v5 Pester中可能吗?我试着调试并找到参数-Tag来修改它,但我找不到它。

您可以创建一个包装PowerShell脚本,在调用Invoke-Pester之前确定标记,然后您可以使用该脚本调用具有所需标记的Pester。

例如:

$ComputerInfo = Get-ComputerInfo
$OS = switch ($ComputerInfo.WindowsProductName) {
{ $_ -match 'Windows 10' } { 'Win10' }
{ $_ -match 'Windows 8' { { 'Win8' }
{ $_ -match 'Linux' } { 'Linux' }
}
$Processor = switch ($ComputerInfo.CsProcessors.Name) {
{ $_ -match 'Intel' } { 'Intel' }
{ $_ -match 'ARM' } { 'ARM' }
}
Invoke-Pester $Path -Tag $OS,$Processor

最新更新