如何将参数传递给所有的瘟疫测试脚本

时间:2019-10-25 15:09:51

标签: powershell pester

通过Invoke-Pester命令,可以使用-Script参数使用显式参数调用单个测试脚本。但是,如果我想将相同的参数传递给所有测试脚本怎么办? 我不想在循环中调用pester,因为我希望它产生单个测试结果文件。

那么,我们该怎么做?

2 个答案:

答案 0 :(得分:5)

从 Pester 5.1 开始,您可以使用 New-PesterContainer -Data @{} 将所有必需的参数传递给 Invoke-Pester。 您现在可以将单个测试文件或测试目录的路径传递给 Invoke-Pester -Path

例如,您有一个测试文件:

param($param1, $param2)

Describe '' {
  It '' { 
    $param1 | Should -Be '...'
    $param2 | Should -Be '...'
  }
}

然后你像这样运行它:

$container = New-PesterContainer -Path <tests_directory> -Data @{ param1='...'; param2='...' }
Invoke-Pester -Container $container

官方文档在这里:https://pester.dev/docs/usage/data-driven-tests#providing-external-data-to-tests

您可以在此处找到新功能列表:https://github.com/pester/Pester/releases/tag/5.1.0

答案 1 :(得分:1)

您可以通过将哈希数组传递给-Script参数来实现。像这样:

$a = @()
$params = @{param1 = 'xx'; param2 = 'wuauserv'}
$a += @{Path =  '.\test1.Tests.ps1'; Parameters = $params}
$a += @{Path =  '.\test2.Tests.ps1'; Parameters = $params}

Invoke-Pester -Script $a