Pester变量放在哪里?

时间:2017-03-23 17:47:09

标签: powershell testing bdd pester

我最近开始使用Pester在PowerShell中编写测试,并且我在运行基本测试时没有遇到任何问题,但是我希望构建一些更复杂的测试并且我正在努力如何处理测试所需的变量。

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

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

1 个答案:

答案 0 :(得分:4)

我不知道我是否可以就这种事情说出最佳做法,但最终Pester脚本只是一个Powershell脚本,所以在任何地方做PowerShell都没有坏处。并且在你的测试周围(虽然要注意一些构造有自己的范围)。

我可能会在脚本顶部使用一个param块,并根据这个建议通过invoke-pester的-script参数传入变量:http://wahlnetwork.com/2016/07/28/using-the-script-param-to-pass-parameters-into-pester-tests/

在一天结束时"最佳实践"对于pester测试(尤其是基础结构验证),定义非常松散/非常不存在。

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

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