多个testng数据提供者

时间:2015-07-24 13:38:11

标签: java testng dataprovider

我有一个数据提供程序,它必须对状态(状态为int)执行数据库查询,并返回一个值(基本上是符合此状态的员工)。

我需要测试几个(8或9)statii。

现在,我的数据提供程序可以循环遍历所有statii并执行查询并返回用户列表。这将有效,但只有一个测试,所以我必须通过或跳过然后整个测试(我想跳过测试,如果我找不到匹配该状态的员工)。

另一方面,我可以制作8个左右的数据提供者,所有数据提供者都以不同的状态执行完全相同的功能,并编写8个测试,但这似乎是浪费。

我想做这样的事情。我知道这是无效的但有办法解决这个问题吗?

for ( i = 1; i < 8; i++ ) {
   @Test(dataProvider = "getTest" parameter = i
   public void myTest(){...}
}


@DataProvider
    public Object[][] getTest(int i) throws Exception {
       query("select * from table where status = i");
       if (notFound) skiptest;
    }

这是&#34;伪代码&#34;我知道,但我希望能够做到功能相同。任何想法如何做到这一点?

1 个答案:

答案 0 :(得分:0)

我认为你误解了数据提供者的概念。

你可以这样做

@DataProvider(name="dataprv")
public Object[][] getTest() throws Exception {
   Object[][] data = new Object[1][any size. in your case it's i]
   query("select * from table where status = i");
   //pass the result of query to data[][]
   return data;
}

现在在你的考试中你可以

@Test(DataProvider="dataprv")
public void testMethod(String status) {
    //status would be the data from the data provider.
    // your test will automatically iterate for every status from the dataprovider which in turn gets the data from database
}