美文网首页
数据和脚本分离之DataProvider

数据和脚本分离之DataProvider

作者: 默默的joy | 来源:发表于2017-02-16 14:03 被阅读0次

    在学习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中的值是一个数据,用户传入数据仅仅只是一个传入一个值,并不知道传入值的意义在哪里,有些时候传入值时会出错

    相关文章

      网友评论

          本文标题:数据和脚本分离之DataProvider

          本文链接:https://www.haomeiwen.com/subject/bcnfmttx.html