数据和脚本分离之DataProvider

在学习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中的数据依次传入并执行脚本

数据和脚本分离之DataProvider_第1张图片
运行结果.jpg

但是这种方法有一些弊端:
1.利用DataProvider只是变相的把数据写在一个脚本中而已,并没有将数据和脚本分离开
2.DataProvider中的值是一个数据,用户传入数据仅仅只是一个传入一个值,并不知道传入值的意义在哪里,有些时候传入值时会出错

你可能感兴趣的:(数据和脚本分离之DataProvider)