Как повторно использовать объекты страницы селена для бизнес-функции

Мы строим модель для каждой страницы с шаблоном объектов страницы selenium. Но для реализации одной бизнес-функции потребуется пара страниц. Например, при создании одного пользователя используются AgreementPage и CreateUserPage, как показано ниже.

agreementPage = AgreementPage()
creatUserPage = agreementPae.accept()
createUserPage.typeEmail("your email address")
createUserPage.submit()

В наших тестах многие тестовые случаи требуют создания одного пользователя для предварительных условий. Чтобы повторно использовать этот код, мы создали один новый уровень службы. Мы перемещаем код в UserService.CreateUser(). Тогда наши тестовые сценарии становятся

def test_create_user():
    userService.CreateUser("email address")

    #do assertion

def test_edit_user():
    authenticationService.login("user name", "password")
    userService.CreateUser("email addrss")

    #do editing created user

def test_delete_user():
    authenticationService.login("user name", "password")
    userService.CreateUser("email addrss")

    #do deleting created user

Поскольку большинство функций включают две или более страниц, объекты страницы переходят на уровень службы. И на уровне тестовых скриптов кажется, что мы тестируем сервисы. Но мы думаем, что имя сервиса не является дружественным и не похоже на язык домена.

Я предполагаю, что это очень распространенный подход к автоматическому тестированию, верно? Как вы называете уровень службы или как вы справляетесь с повторными объектами страницы?


person Cypine    schedule 21.07.2013    source источник
comment
После прочтения сообщений Гойко Аджича: gojko.net/2010/04/13/ и gojko.net/2009/10/06/putting-selenium-in-the-right-place, я согласен, что именование Activity лучше, чем сервисы. Это также доказывает, что это одна общая иерархия кода для автоматизированного тестирования: 1. тестовые сценарии 2. действия 3. объекты страницы --- тестовые сценарии выполняют тестирование функциональности, а также иллюстрируют требования. Действия описывают поведение системы. Объекты страницы инкапсулируют операции на страницах.   -  person Cypine    schedule 20.10.2013


Ответы (1)


Мы также используем объектную модель страницы в качестве основы, и это здорово. Одним из способов возобновления страницы является создание метода на странице, который каждый раз возвращает украшенную страницу. Вызовите метод перед вызовом/использованием любого другого объекта на вашей странице. Это должно решить проблему. Позвольте мне привести вам простой пример страницы входа.

 public class LoginPage{
 public LoginPage getLoginPage(){
 PageObject.initElements(yourDriverObject, LoginPage.class);
}


public void doLogin(){
 //Code to login 

}

Test class

public class testLogin{

 new LoginPage.getLoginPage().doLogin();

}
person Vinay    schedule 21.07.2013
comment
Я понимаю цепочку действий, но это не помогает моей проблеме. Я не хочу видеть много дубликатов LoginPage.getLoginPage().doLogin(), где нам нужна функциональность входа в систему. Фактически, есть дублированный блок кода с объектом страницы, более одной строки кода. - person Cypine; 22.07.2013
comment
Я понимаю. Но поскольку у нас есть методы, которые выполняют работу, а не пишут логику в тестовом примере, я думаю, дублирование можно значительно сократить. Может кто тоже поможет???? - person Vinay; 22.07.2013