Testng与Selenium SoftAssert BestPractice

时间:2015-02-17 10:46:40

标签: selenium-webdriver testng

我正在使用带有PageObject模型的Selenium的Testng。在java文件中,我有多个@Test方法 -

    @Test( groups={"regression"},description="used to navigate", priority=206)
public void navigateToRegister() {
    loginFrameMethods = PageFactory.initElements(driver, LoginFrameObjects.class);
    loginFrameMethods.clickAccountButton();
    loginFrameMethods.verifyTextPresence();// Asserts are done here
    loginFrameMethods.fillSignUpPhoneNumber("1234567890");
    loginFrameMethods.clickSignupContinueButton();
    loginFrameMethods.verifyResult(); // Asserts are done here
} 
@Test(){
//Other Validations
// Asserts May be done here also at the @Test Level
}

现在我想知道什么是好的做法 - 在PageFactory Class(在本例中为LoginFrameMethods)中编写断言,因为这些方法也可以在其他测试流程中或在单独的TestLevel中重复使用。

如果答案是前一个,那么如何使用 SoftAssert ,因为它将要求所有PageFactory类访问相同的SoftAssert对象以调用 assertAll()方法。

1 个答案:

答案 0 :(得分:0)

页面对象的理想实现并不建议在页面类中使用断言。您应该自定义类的方向。我想为特定视图/页面类的所有验证方法提供单独的包。我不确定你的框架结构,但如果情况要求我做一些与你的情况类似的事情,我宁愿做一些如下的事情:

org.xyz.example.views
    ----LoginFramePage.java
org.xyz.example
    ----VerifyLoginFramePage.java

上面的包结构尝试建议,让每个视图都有两个包,一个包将包含页面方法,如login,logout和second class(Verify * .java)将包含该特定视图的所有断言方法。