Testng 当其中一个数据集导致故障时,不执行dependsOnMethods和dataprovider方法
我正在尝试创建一个testNG测试,该测试将取决于前一个测试的成功执行(假设我想创建一个帐户,然后编辑一些详细信息)。我想把它和数据提供者结合起来。我决定使用dependsOnMethods,因为这似乎是合乎逻辑的,但我注意到它的行为超出了我的预期。在下面的示例中,我希望测试“三”跳过一次并执行一次,因为第一组数据提供了通过条件,而另一组提供了失败条件。不幸的是,我似乎在“dependsOnMethods”背后缺少了一些概念。也许我还有别的办法可以做到? 谢谢你的帮助Testng 当其中一个数据集导致故障时,不执行dependsOnMethods和dataprovider方法,testng,Testng,我正在尝试创建一个testNG测试,该测试将取决于前一个测试的成功执行(假设我想创建一个帐户,然后编辑一些详细信息)。我想把它和数据提供者结合起来。我决定使用dependsOnMethods,因为这似乎是合乎逻辑的,但我注意到它的行为超出了我的预期。在下面的示例中,我希望测试“三”跳过一次并执行一次,因为第一组数据提供了通过条件,而另一组提供了失败条件。不幸的是,我似乎在“dependsOnMethods”背后缺少了一些概念。也许我还有别的办法可以做到? 谢谢你的帮助 import org.te
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import org.testng.Assert;
public class simpleTest {
@DataProvider(name = "provided data")
public static Object[][] data() throws Exception {
Object[][] data = new Object[][] {
{true},
{false}
};
return data;
}
@Test(dataProvider = "provided data")
public void one(boolean cond){
System.out.println("******** 1");
}
@Test(dataProvider = "provided data")
public void thisfailssometimes(boolean cond){
System.out.print("******** 2 !!!");
if (cond) {System.out.println("PASS");}else{System.out.println("FAIL");};
Assert.assertTrue(cond);
}
@Test(dataProvider = "provided data",dependsOnMethods = {"thisfailssometimes"})
public void three(boolean cond){
System.out.println("******** 3");
}
}
我也能看到这种行为,我本以为三个可以运行一次,也可以跳过一次。在这两种情况下都跳过第三种方法。您可能会提交一个bug,或者等待Cedric回复线程。 作为一种解决方法,尝试通过工厂执行相同的流程会产生预期的行为。下面是修改后的代码
@Factory(dataProvider="provided data")
public simpleTests(boolean b){
this.b = b;
}
@DataProvider(name = "provided data")
public static Object[][] data() throws Exception {
Object[][] data = new Object[][] {
{true},
{false}
};
return data;
}
@Test
public void one(){
System.out.println("******** 1");
}
@Test
public void thisfailssometimes(){
System.out.print("******** 2 !!!");
if (b) {System.out.println("PASS");}else{System.out.println("FAIL");};
Assert.assertTrue(b);
}
@Test(dependsOnMethods = {"thisfailssometimes"})
public void three(){
System.out.println("******** 3");
}
这适用于gr8,感谢您的及时回复和代码示例。