管理硒测试项目

时间:2015-06-21 06:42:51

标签: java selenium-webdriver

我有关于管理selenium web项目的一般问题,下面是一个例子,我的问题是如何管理那些测试用例?(例子中只有3个,测试用例的实际数量超过1000个)

为子测试创建类是否合适,如登录类和所有与登录相关的测试都在此类下?

是否有编写测试用例和管理测试用例的约定?

谢谢大家。

I create class with tests like:
        @Test   //Test1
        public  void logInFaildTest() {
            GridTest gridTest = new GridTest();
            WebDriver webDriver = gridTest.getWebDriver();
            String url = gridTest.getUrl();
            LoginPage logIn = new LoginPage(webDriver, url);
            String userName = "user";
            String pass="pass";
            logIn.login(userName, pass);
            WebElement errorMsg = webDriver.findElement(By.className("dijitToasterContent"));
            String actual = errorMsg.getAttribute("innerHTML");
            String expected="Incorrect user name or password. Please try again.";
            assertEquals(expected, actual);
            webDriver.close();
        }

        @Test
        public void loginSucsecc()
        {
            GridTest gridTest = new GridTest();
            String url = gridTest.getUrl();
            WebDriver webDriver = gridTest.getWebDriver();
            LoginPage logIn = new LoginPage(webDriver, url);
            String userName = "user";
            String pass="pass";
            logIn.login(userName, pass);
            String actual = webDriver.getCurrentUrl();
            String expected= url+"#lastmile/";
    //      webDriver.close();
            webDriver.quit();
            assertEquals(expected, actual);
        }

        @Test
        public void accountLock()
        {
            GridTest gridTest = new GridTest();
            String url = gridTest.getUrl();
            WebDriver webDriver = gridTest.getWebDriver();
            LoginPage logIn = new LoginPage(webDriver, url);
            String userName = "user";
            String pass="wrong";
            for(int i=0;i<11;i++){
                logIn.login(userName, pass);
                logIn.clearFileduNamePass();
            }
            WebElement msg = webDriver.findElement(By.id("dijit__TemplatedMixin_0"));       //block message
            String actual  = msg.getAttribute("innerHTML");
            int splitIndex= actual.indexOf(".<");
            actual = actual.substring(0, splitIndex);

            String expected= "Your account has been locked";
            webDriver.quit();
            assertEquals(expected, actual);
        }
    }

1 个答案:

答案 0 :(得分:2)

是的,你所做的只是好的。所有与登录相关的操作都可以进入一个班级,所以如果有任何改变,我们可以轻松管理

对象维护

您可以使用Page Object Model(POM),因为它是广泛使用的方法,并且易于管理。这可以更像维护对象存储库来管理对象

正如您所看到的,我们所做的只是找到元素并填充这些元素的值。

这是一个小脚本。脚本维护看起来很简单但随着时间的推移测试套件将会增长随着您为代码添加越来越多的行,事情变得艰难。

脚本维护的主要问题是,如果10个不同的脚本使用相同的页面元素,并且该元素有任何更改,则需要更改所有10个脚本。这非常耗时且容易出错。

更好的脚本维护方法是创建一个单独的类文件,该文件可以找到Web元素,填充它们或验证它们。可以在使用该元素的所有脚本中重用此类。将来,如果Web元素发生变化,我们只需要在1个类文件中进行更改,而不是10个不同的脚本。

此方法称为页面对象模型(POM)。它有助于使代码更具可读性,可维护性和可重用性。

测试数据维护

接下来要考虑的是用于运行具有不同数据集的测试用例的测试数据测试驱动方法

POM 相同您可以创建一个工厂类,在需要时为您提供数据集,这样当您想要更改/修改数据时,您只需转到工厂并进行更改即可。

对于ex,您创建一个名为LoginData的类,其中包含getValidCredentials getRandomCredentials等函数来获取您的数据。如果您的应用程序每次运行都需要随机的emailid,那么您只需单独修改getValidCredentials部分即可 当您的应用程序主要在表单或用户数据上运行时,它会对您有所帮助

可重复使用的组件

第三件事是您创建的内容的可重用性。您可以将validLogin重用于其他场景

相关问题