即使数据提供者的一种方法失败,也不应跳过依赖于 TestNG 的方法
TestNG dependent method should not get skipped even if one method of dataprovider fails
假设我们在 TestNG 中有 2 个方法和 dataprovider。
@Test(dataProvider = dpA)
testA(String str){
logger.info(str);
}
@Test(dataProvider = dpB, dependsOnMethods = {"testA"})
testB(String str){
logger.info(str);
}
@DataProvider(name = "dpA")
public Object[][] dpA(){
return new Object[][] { { "This test fails"}, {"This test passes"} };
}
@DataProvider(name = "dpB")
public Object[][] dpB(){
return new Object[][] { { "new test"}, {"some test"} };
}
给定: testB
应该只在 testA
之后执行,这就是我们使用 dependsOnMethods
.
的原因
当前场景: TestNG 会跳过 testB
即使来自数据提供者的任何案例失败。
目标: testB
应该 运行 如果来自数据提供者的任何一个案例通过。
目前dependsOnMethods
是硬依赖,也就是说,必须完全满足它才能执行依赖方法。
A @DataProvider
powered @Test
方法基本上只是多次 运行 相同 @Test
的一种方法(当然是使用多组数据而不是使用设置 @Test
方法的 invocationCount
属性时发生的相同数据)。
所以这在当前的 TestNG 中是无法实现的,如果不乱改测试结果等,并导致无法解释的行为。
如果这是您希望在 TestNG 中看到的内容,那么我建议您在 TestNG 问题页面中将此作为缺陷提交,并在 https://github.com/cbeust/testng/issues[=17 中开始对此进行讨论=]
假设我们在 TestNG 中有 2 个方法和 dataprovider。
@Test(dataProvider = dpA)
testA(String str){
logger.info(str);
}
@Test(dataProvider = dpB, dependsOnMethods = {"testA"})
testB(String str){
logger.info(str);
}
@DataProvider(name = "dpA")
public Object[][] dpA(){
return new Object[][] { { "This test fails"}, {"This test passes"} };
}
@DataProvider(name = "dpB")
public Object[][] dpB(){
return new Object[][] { { "new test"}, {"some test"} };
}
给定: testB
应该只在 testA
之后执行,这就是我们使用 dependsOnMethods
.
的原因
当前场景: TestNG 会跳过 testB
即使来自数据提供者的任何案例失败。
目标: testB
应该 运行 如果来自数据提供者的任何一个案例通过。
目前dependsOnMethods
是硬依赖,也就是说,必须完全满足它才能执行依赖方法。
A @DataProvider
powered @Test
方法基本上只是多次 运行 相同 @Test
的一种方法(当然是使用多组数据而不是使用设置 @Test
方法的 invocationCount
属性时发生的相同数据)。
所以这在当前的 TestNG 中是无法实现的,如果不乱改测试结果等,并导致无法解释的行为。
如果这是您希望在 TestNG 中看到的内容,那么我建议您在 TestNG 问题页面中将此作为缺陷提交,并在 https://github.com/cbeust/testng/issues[=17 中开始对此进行讨论=]