最近,我开始使用Pester用PowerShell编写测试,运行基本测试没有问题,但是我希望构建一些更复杂的测试,并且我很难处理测试所需的变量。
我正在编写测试来验证一些云基础设施,所以在我们运行部署之后,它会通过并验证它是否已经正确部署,并且一切都在它应该达到的位置。因此,需要大量的变量,VM名称、网络名称、子网配置等,我们希望对它们进行验证。
在普通的PowerShell脚本中,这些变量将存储在脚本之外,并作为参数输入,但这似乎不符合Pester或BDD的设计,是否应该在测试中对这些变量进行硬编码?这似乎不太直观,尤其是如果我想在其他环境中重用这些测试的话。我确实尝试过将它们存储在外部JSON文件中,并将其读入我的测试中,但即使这样,我仍然需要在脚本中硬编码到JSON文件的路径。还是我做错了,有更好的方法?
发布于 2017-03-23 18:09:42
我不知道我是否能为这类事情提供最佳实践,但最终,Pester脚本只是一个Powershell脚本,所以在测试的任何地方执行powershell都没有坏处(尽管要注意一些构造有自己的作用域)。
我可能会在脚本顶部使用param块,并根据以下建议通过调用-pester的-script参数传入变量:http://wahlnetwork.com/2016/07/28/using-the-script-param-to-pass-parameters-into-pester-tests/。
最后,纠缠测试(特别是基础设施验证)的“最佳实践”定义非常松散/根本不存在。
例如,我在Active测试脚本中使用了param块,它(部分地)测试存储的配置文件,正如您所描述的:
https://github.com/markwragg/Test-ActiveDirectory/blob/master/ActiveDirectory.tests.ps1
发布于 2022-09-30 04:49:45
正如所描述的here,您可以添加BeforeAll块来定义变量
Describe "Check name" {
BeforeAll {
$name = "foo"
}
It "should have the correct value" {
$name | Should -Be "foo"
}
}https://stackoverflow.com/questions/42983377
复制相似问题