我的Selenium测试应该在哪里检查预期/实际结果?

时间:2015-10-26 15:20:00

标签: java selenium

我目前正在为Web应用程序设计测试框架。该框架是一个混合(数据和关键字驱动)框架。我有它设置所以我有完整的UI函数的包,我可以调用测试类来导航和单击应用程序。

我想知道最佳做法。

我应该每走一步都检查结果吗?或者我应该在测试结束时检查结果吗?

有关更多详细信息,这是我使用最小化代码进行测试的当前结构:

// This test contains one step. The following method navigates to the page and inputs invalid credentials.
// We than check if we're still on the login page. If we are, the test passes. If we can't find the
// "login text", than the test has failed.
        LoginPage.invalidCredentialsOne.run(driver);
        Thread.sleep(2000);

        WebElement logintext = driver.findElement(By.xpath(prop.getProperty("logintext")));
        if (logintext.getText().equals("LOG IN")) {
            //add pass entry to the excel sheet
            testresultdata.put("3", new Object[] {
                2d, "User should not be able to login with an invalid password", "Login failed", "Pass"
            });
            driver.close();
            Alert alert = driver.switchTo().alert();
            alert.accept();
        } else {
            //add fail entry to the excel sheet
            testresultdata.put("3", new Object[] {
                2d, "User should not be able to login with an invalid password", "Login failed", "Fail"
            });
            fail();
            driver.close();
            Alert alert = driver.switchTo().alert();
            alert.accept();
        }

在上面的代码中,我检查了预期/实际结果 AFTER 我运行了该方法。是否可以检查方法本身内的预期/实际结果?这有什么优点/缺点?

我觉得在该方法中运行预期/实际结果可以提高可维护性和测试准确性(能够准确查看测试失败的位置)。

或者为什么不试试两者?

方法 - 检查每个导航。如果导航失败,请在控制台中输出一行,告诉您在哪里。这会检查简单的UI错误。

测试类 - 检查更具体的用户场景。

对正确的最佳做法非常感兴趣。提前谢谢。

1 个答案:

答案 0 :(得分:1)

我会将测试方法(尤其是使用selenium编写的系统测试)划分为Action和Verification。这意味着您必须划分导致某些系统更改的方法(如您的invalidCredentialsOne)以及应在更改发生后验证/测试系统状态的方法。

为什么这样好?通过这种方式,您可以使用一些操作来构建用户场景,并在所需位置验证此设置。这种方法为构建各种场景和verios测试提供了灵活性。

如果我们回到你的例子,让我们假设你不仅要测试你回到登录页面,以防错误的凭据,但是,例如,在5次尝试后系统(只是假设!)将阻止用户。 在这种情况下,您可以使用您的第一个操作5次,然后验证系统是否阻止用户。

P.S。请尽量避免在硒代码中使用Thread.sleep。等待物体外观要好得多。