2

我最近开始使用 Pester 在 PowerShell 中编写测试,并且运行基本测试没有问题,但是我正在寻找构建一些更复杂的测试,并且我正在努力处理我需要的变量测试。

我正在编写测试来验证一些云基础设施,所以在我们运行部署之后,它会通过并验证它是否已正确部署并且一切都在它应该在的位置。因此,我们需要验证大量变量、VM 名称、网络名称、子网配置等。

在普通的 PowerShell 脚本中,这些将存储在脚本之外并作为参数输入,但这似乎不符合 Pester 或 BDD 的设计,我是否应该在测试中对这些变量进行硬编码?这似乎不是很直观,尤其是如果我可能想将这些测试重新用于其他环境。我确实尝试将它们存储在外部 JSON 文件中并将其读入我的测试中,但即便如此,我也需要在我的脚本中硬编码 JSON 文件的路径。还是我做错了,有更好的方法?

4

1 回答 1

4

我不知道我是否可以谈论这类事情的最佳实践,但归根结底,Pester 脚本只是一个 Powershell 脚本,因此在测试中和测试周围的任何地方执行 powershell 都没有害处(尽管要注意一些构造有自己的作用域)。

我可能会在脚本顶部使用一个参数块,并根据这个建议通过invoke-pester的-script参数传入变量:http ://wahlnetwork.com/2016/07/28/using-the-script-参数传递参数进入纠缠测试/

归根结底,纠缠测试(尤其是基础设施验证)的“最佳实践”定义非常松散/几乎不存在。

例如,我在我的 Active Directory 测试脚本中使用了一个 param 块,它(部分)对存储的配置文件进行测试,就像您描述的那样:

https://github.com/markwragg/Test-ActiveDirectory/blob/master/ActiveDirectory.tests.ps1

于 2017-03-23T18:09:42.360 回答