Testng 如何在dataprovider中保持数据的顺序?
情况:我有两个测试a()和b()。使用“dependsOnMethods”参数使b()依赖于a()。我有两个测试的不同数据集。有没有办法确保在执行测试时保持数据的顺序 示例:Testng 如何在dataprovider中保持数据的顺序?,testng,testng-dataprovider,Testng,Testng Dataprovider,情况:我有两个测试a()和b()。使用“dependsOnMethods”参数使b()依赖于a()。我有两个测试的不同数据集。有没有办法确保在执行测试时保持数据的顺序 示例: @DataProvider(name = "test1") public Object[][] createData1() { return new Object[][] { { "Google" }, { "Microsoft"}, }; } @DataProvider
@DataProvider(name = "test1")
public Object[][] createData1() {
return new Object[][] {
{ "Google" },
{ "Microsoft"},
};
}
@DataProvider(name = "test2")
public Object[][] createData2() {
return new Object[][] {
{ "Apple"},
{ "Yahoo"},
};
}
@Test(dataProvider = "test1")
public void verifyData1(String n1) {
System.out.println(n1);
}
@Test(dataProvider = "test2", dependsOnMethods="verifyData1")
public void verifyData2(String n1) {
System.out.println(n1);
}
我希望结果总是这样
谷歌,苹果,微软,雅虎。
或
微软、雅虎、谷歌、苹果
但不是
谷歌,雅虎,微软,苹果,或谷歌,微软,苹果,雅虎
这意味着,如果test1使用其dataprovider中的第一组参数运行,那么test2也应该使用其dataprovider中的第一组参数运行。
test1的dataprovider中的第二组参数是否在第一组参数之前运行并不重要,只要第二个测试在运行第一组参数之前还使用其dataprovider中的第二组参数运行。有没有办法做到这一点
刚刚意识到这可以通过使用GROUPBY instances参数来解决。(我在testngxml中找不到这个选项,因为我使用的是旧版本。)。我将尝试升级我的testNg并发布更新 testng首先对从日期提供程序接收的所有数据运行“verifyData1”方法,然后运行“verifyData2”,因此输出将是:谷歌、微软、苹果、雅虎 依赖方法按类分组。如果方法b()依赖于方法a(),并且您拥有包含这些方法的类的多个实例(由于数据提供程序的工厂),则调用顺序为:
verifyData1(“谷歌”)
verifyData1(“Microsoft”)
verifyData2(“苹果”)
verifyData2(“雅虎”)
在所有实例调用其a()方法之前,TestNG不会运行b()
如果您想订购:
verifyData1(“谷歌”)
verifyData2(“苹果”)
verifyData1(“Microsoft”)
verifyData2(“雅虎”)
您可以使用XML属性按实例分组:
我将我的test ng版本升级到了6.8.8,并使用了分组实例,但它没有解决我的问题。我知道这是默认行为。有办法改变吗?没错,文件中有说明: