首页 > 代码库 > 2.12 使用@DataProvider
2.12 使用@DataProvider
提供数据的一个测试方法。注解的方法必须返回一个Object[] [],其中每个对象 []的测试方法的参数列表中可以分配。该@Test 方法,希望从这个 DataProvider 的接收数据,需要使用一个 dataProvider 名称等于这个注解的名字。
返回Object[][]
(1)直接给定测试数据
@DataProvider( name= "user")
public Object[][] user(){
return new Object[][]{
{ "", "", "账号不能为空" },
{ "admin"," " ,"密码不能为空" },
{ " ", "a123456","账号不能为空" },
{ "ad ", "123456","账号“ad”不存在" },
{ "admin","12345" ,"密码错误" },
};
}
----------
@Test(dataProvider ="user" )
public void testEcafeLogin(String userName, String passWord, String expectText) {
loginPageClass loginpage = new loginPageClass();
loginpage. load();
loginpage. login( userName, passWord);
Assert. assertEquals(loginpage.getString(), expectText);
loginpage. logout();
}
(2)或读取CSV文件
@DataProvider(name="testData") //使用注解DataProvider,将数据集合命名为“testData”
public Object[][] words() throws IOException{
return getTestData("D:\\testData.csv");
}
DataProvider返回的是一个Object的二维数组,二维数组中的每个一维数组都会传递给调用函数 @Test,作为参数使用
(1)@Test标识的test method被执行的次数和object[][]包含的一维数组的个数是一致的
(2)@Test标识的函数的参数个数,也和object内一维数组内的元素数是一致的。
(1)在test方法中指明DataProvider: 如果DataProvider有指明name值,那么在test中使用name,
@DataProvider(name="testData")
.....
@Test(dataProvider ="testData" )
.....
(2)在test方法中指明DataProvider: 如果没有名字,使用对应的方法名
@DataProvider()
public Object[][] user(){ }
....
@Test(dataProvider ="user" )
(3)另外如果DataProvider和Test方法不再同一类中,如下指明
否则执行的时候会Skip该方法,有报错提示“......requires a @DataProvider named : dataprovider2”,并且数据类里的方法必须声明为static,不然也提取不了数据:
测试类:
数据类:
@DataProvider
public static Object[][] NoNameMethod(){ }
2.12 使用@DataProvider
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。