【发布时间】:2019-09-26 21:51:05
【问题描述】:
我有几个相互依赖的测试用例。可以在 TestNG 中使用 groups 和 dependsOnGroups 在 @Test 注释中定义执行顺序:
public class MyTest {
@Test(groups = { "group1" })
public void testCase1() {
}
@Test(groups = {"group2"}, dependsOnGroups = { "group1" })
public void testCase2() {
}
@Test(groups = {"group2"}, dependsOnGroups = { "group1" })
public void testCase() {
}
@Test(groups = { "group3" }, dependsOnGroups = { "group2" })
public void testCase4() {
}
}
但我只需要一个@Test 方法和一个@DataProvider 动态地希望它给我组和依赖项。
public class MyTest {
@Test(dataProvider = "test-cases", groups = {testCase[1]}, dependsOnGroups = {testCase[2]})
public void executeTest(TestCase testCase) throws Exception {
}
@DataProvider(name = "test-cases", parallel = true)
public Object[][] getTestCases() {
Object[][] testdata = new Object[...][...];
// Fields: test name, group, depends on, test data
testdata[0] = {"TC#1", "group1", "", "foo data"};
testdata[1] = {"TC#2", "group2", "group1", "bar data"};
testdata[2] = {"TC#3", "group2", "group1", "bzz data"};
testdata[3] = {"TC#4", "group3", "group2", "frr data"};
return testdata;
}
}
不幸的是,这种方法不起作用,因为无法从 @Test(..., groups = {testCase[1]}, ...) 注释访问 testCase[1]。
是否有另一种方法可以将数据提供者驱动的测试按固定顺序排列?
【问题讨论】:
-
当你说它不起作用时,你的意思是你无法在上面的代码中从
@Dataprovider获取数据还是你不想在@Dataprovider中输入数据但想要它其他方式? -
@user1207289 我阐明了我想要实现的目标:将数据驱动的测试用例按固定顺序排列。
标签: java testng testng-dataprovider