我有一个数据提供程序,它必须对状态(状态为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;我知道,但我希望能够做到功能相同。任何想法如何做到这一点?
答案 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
}