在哪里放置纠缠变量?
Where to put Pester Variables?
我最近开始使用 Pester 在 PowerShell 中编写测试,运行基本测试没有问题,但是我正在寻找构建一些更复杂的测试并且我正在努力如何处理测试所需的变量。
我正在编写测试来验证一些云基础设施,所以在我们 运行 部署之后,它会通过并验证它是否已正确部署并且一切都在应有的位置。因此,我们需要验证大量变量、VM 名称、网络名称、子网配置等。
在普通的 PowerShell 脚本中,这些变量将存储在脚本外部并作为参数输入,但这似乎不符合 Pester 或 BDD 的设计,我是否应该在测试中对这些变量进行硬编码?这似乎不是很直观,尤其是当我可能想将这些测试重新用于其他环境时。我确实尝试过将它们存储在外部 JSON 文件中并将其读入我的测试中,但即便如此,我仍需要在我的脚本中对 JSON 文件的路径进行硬编码。还是我做错了,有更好的方法?
我不知道我是否可以就这类事情谈谈最佳实践,但归根结底,Pester 脚本只是一个 Powershell 脚本,因此在测试中和测试周围的任何地方执行 powershell 都没有坏处(尽管要注意某些结构有自己的作用域)。
我可能会在脚本顶部使用一个参数块,并根据此建议通过 invoke-pester 的 -script 参数传递变量:http://wahlnetwork.com/2016/07/28/using-the-script-param-to-pass-parameters-into-pester-tests/
归根结底,"best practice" 纠缠测试(特别是基础设施验证)非常松散 defined/pretty 不存在。
例如,我在我的 Active Directory 测试脚本中使用了一个参数块,它(部分)针对存储的配置文件进行测试,就像您描述的那样:
https://github.com/markwragg/Test-ActiveDirectory/blob/master/ActiveDirectory.tests.ps1
我最近开始使用 Pester 在 PowerShell 中编写测试,运行基本测试没有问题,但是我正在寻找构建一些更复杂的测试并且我正在努力如何处理测试所需的变量。
我正在编写测试来验证一些云基础设施,所以在我们 运行 部署之后,它会通过并验证它是否已正确部署并且一切都在应有的位置。因此,我们需要验证大量变量、VM 名称、网络名称、子网配置等。
在普通的 PowerShell 脚本中,这些变量将存储在脚本外部并作为参数输入,但这似乎不符合 Pester 或 BDD 的设计,我是否应该在测试中对这些变量进行硬编码?这似乎不是很直观,尤其是当我可能想将这些测试重新用于其他环境时。我确实尝试过将它们存储在外部 JSON 文件中并将其读入我的测试中,但即便如此,我仍需要在我的脚本中对 JSON 文件的路径进行硬编码。还是我做错了,有更好的方法?
我不知道我是否可以就这类事情谈谈最佳实践,但归根结底,Pester 脚本只是一个 Powershell 脚本,因此在测试中和测试周围的任何地方执行 powershell 都没有坏处(尽管要注意某些结构有自己的作用域)。
我可能会在脚本顶部使用一个参数块,并根据此建议通过 invoke-pester 的 -script 参数传递变量:http://wahlnetwork.com/2016/07/28/using-the-script-param-to-pass-parameters-into-pester-tests/
归根结底,"best practice" 纠缠测试(特别是基础设施验证)非常松散 defined/pretty 不存在。
例如,我在我的 Active Directory 测试脚本中使用了一个参数块,它(部分)针对存储的配置文件进行测试,就像您描述的那样:
https://github.com/markwragg/Test-ActiveDirectory/blob/master/ActiveDirectory.tests.ps1