[英]How can I improve my tests using PageObject pattern?
我想我已经了解了PageObject模式的要点,但是其中有一些我没有得到。
所以我一直在学习本教程,现在有了这个Page类:
public class SignUpPage extends AbstractPage {
AndroidDriver<MobileElement> driver;
public SignUpPage(AndroidDriver<MobileElement> driver) {
super(driver);
}
public void signUpAllFieldsEmpty() {
signup_button.click();
}
public void signUpOnlyFirstName() {
first_name_edittext.sendKeys("First name");
hideKeyboard();
signup_button.click();
}
@AndroidFindBy(id="signup_button")
private MobileElement signup_button;
@AndroidFindBy(id="first_name_edittext")
private MobileElement first_name_edittext;
@AndroidFindBy(id="last_name_edittext")
private MobileElement last_name_edittext;
@AndroidFindBy(id="signup_email_edittext")
private MobileElement signup_email_edittext;
@AndroidFindBy(id="signup_password_edittext")
private MobileElement signup_password_edittext;
@AndroidFindBy(id="confirm_password_edittext")
private MobileElement confirm_password_edittext;
}
然后我有这个Test类:
public class Test_001_SignUp extends AbstractTest {
public Test_001_SignUp() {}
@Test
public void signUp_allFieldsEmpty() {
app.landingPage().goToSignUpPage();
app.signUpPage().signUpAllFieldsEmpty();
}
@Test
public void signUp_onlyFirstName() {
app.signUpPage().signUpOnlyFirstName();
}
}
我不确定我是否做对了,因为如果我创建另一个与测试相关的@Test方法,则看起来测试类中的方法变得多余。
我该如何改善? 还是该测试做错了什么?
您的Page
类应该是愚蠢的-它仅控制页面。
public void signup() {
signup_button.click();
}
public void enterFirstName(String firstName) {
first_name_edittext.sendKeys(firstName);
}
public String getFirstName() {
etc...
您的Test
类具有为每个测试调用哪个方法的逻辑。
其他几点:
getSuccessMessage
方法或getPageTitle
(或注册完成后页面上发生的任何事情-您可以通过测试来检查其是否有效!)。 然后,您的测试可以断言该文本存在并且正确。 StepDef
类。 如果所有测试都具有相同的起点,则可以在带有@Before
注释的设置方法中以及带有@After
注释的clean方法中进行操作。 它们将在每种测试方法之前和之后运行,并将执行将测试带入起点所需的操作
public class Test_001_SignUp extends AbstractTest {
public Test_001_SignUp() {}
@Before
public void setUp() {
app
.landingPage()
.goToSignUpPage();
}
@Test
public void signUp_allFieldsEmpty() {
app
.signUpPage()
.signUpAllFieldsEmpty();
}
@Test
public void signUp_onlyFirstName() {
app
.signUpPage()
.signUpOnlyFirstName();
}
@After
public void cleanUp() {
// roll back to initial state
}
}
作为附带说明,让我们以signUp_allFieldsEmpty()
测试为例。 goToSignUpPage()
应该返回SignUpPage
实例,因此您可以链接下一步
@Test
public void signUp_allFieldsEmpty() {
app
.landingPage()
.goToSignUpPage()
.signUpAllFieldsEmpty();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.