在学习webdriver的时候,写到最后会发现自己填写的数据会和脚本混在一起,这样如果改个数据会很不方便,所以便想怎么把数据独立出来,可以对数据进行统一的管理。顺便MARK一下。。。
testng里面有提供DataProvider的注解,用于做数据驱动,定义一个DataPro 类用于存放数据
public class DataPro {
@DataProvider(name = "loginSuccess1")
public static Object[][] data1(){
return new Object[][]{
{"wuyy001","123654"},
{"wuyy002","123654"}
};
}
}
创建一个测试类,将DataProvider中的值传入。如果DataProvider的注解没有和要运行的测试类写在同一个脚本中,那么在传数据的时候要加一句dataProviderClass = DataPro.class,指定测试数据Java类,否则数据传不进去,test会被忽略
public class Login_Test {
WebDriver driver;
@BeforeTest
public void openBrowser(){
driver = SeleniumDriver.openBrowser("firefox","http://www.epwk.us/");
}
// @DataProvider(name = "loginSuccess")
// public static Object[][] data(){
// return new Object[][]{
// {"wuyy001","123654"}
// };
// }
@Test(dataProvider = "loginSuccess",alwaysRun = true, dataProviderClass = DataPro.class)
public void login(String account,String password) {
driver = SeleniumDriver.openBrowser("firefox","http://www.epwk.us/");
Action.click(LoginPage.loginButton);
// 输入账号密码登陆
Action.sendkeys(LoginPage.account, account);
Action.sendkeys(LoginPage.password, password);
Action.click(LoginPage.submintButton);
}
执行结果如下图所示,会将DataProvider中的数据依次传入并执行脚本
运行结果.jpg但是这种方法有一些弊端:
1.利用DataProvider只是变相的把数据写在一个脚本中而已,并没有将数据和脚本分离开
2.DataProvider中的值是一个数据,用户传入数据仅仅只是一个传入一个值,并不知道传入值的意义在哪里,有些时候传入值时会出错
网友评论