[英]Mix pester Discovery and Run variables
我有这个纠缠脚本块。 当我运行它时,“Test1”失败了,这很好。 第二个“Test2”失败了,但我希望它通过。 对于纠缠 5,这是建议:
`将所有代码放入 It、BeforeAll、BeforeEach、AfterAll 或 AfterEach。 除非您有充分的理由这样做,否则不要将代码直接放入 Describe、Context 或文件顶部,也不要将其包装在这些块之一中。
所有错位的代码都将在 Discovery 期间运行,其结果在 Run 期间将不可用。`
这解释了为什么我的“Test2”失败了。 但是如果我将我的代码放在一个建议的块中,那么我将无法使用 TestCases。
有没有办法解决这个问题?
Describe "Sample" {
$test = 1
$testCase = @(
@{var1 = $test; ExpectedResult = $true})
It "Test1" -Tag "Update" -TestCase $testCase {
param ($var1, $expectedresult)
$var1 | should -be $null
$test | should -be 1
}
it "Test2" -Tag "Fail" {
$test | should -be 1
}
}
正如@Efie 所提到的,生成测试用例的代码是该规则的常见例外。 在 Pester 5.1 中添加了一个新的BeforeDiscovery
块,您应该将其用于此类代码。
一般来说,您应该很少考虑在测试中重用$test
的问题。 您的测试用例应包含所需的变量。 实际上,这就是您将变量从 Discovery 传递到 Run 以使其成为可能的方式,方法是将其作为测试用例值提供。 在您的示例中,您已经这样做了,因此$var1
应该在测试中可用并且应该等于1
(与 Discovery 中的$test
相同)。
我经常将 hashtable-key 命名为 Discovery-variable(在这种情况下为test
),以使传输感觉无缝。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.