2013-07-21 2 views
0

Мы строим модель для каждой страницы с шаблоном объектов селеновых страниц. Но для реализации одной бизнес-функции она будет включать несколько страниц. Например, создание одного пользователя, она включает в себя 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 

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

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

+0

После прочтения сообщения Гойко Адзик в: http://gojko.net/2010/04/13/how-to-implement-ui-testing-without-shooting-yourself-in-the-foot-2/ и http://gojko.net/2009/10/06/putting-selenium-in-the-right-place/, я согласен с тем, что мероприятие лучше называет, чем услуги. Это также доказывает, что это одна общая иерархия кода для тестирования автоматизации: 1. тестовые скрипты 2. действия 3. объекты страницы --- Тестовые скрипты выполняют тестирование для функциональности, а также иллюстрируют требования. Активизация поведения системы. Объекты страницы инкапсулируют операции на страницах. – Cypine

ответ

0

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

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(); 

} 
+0

Цепочка действия undersand, но это не помогает моей проблеме. Я не хочу видеть много дубликатов «LoginPage.getLoginPage(). DoLogin()», где нам нужна функциональность входа. На самом деле есть дублированный блок кода с объектом страницы, более одной строки кода. – Cypine

+0

Я недосмотр. Но так как у нас есть методы, вместо написания логики в тестовом примере, я думаю, что дублирование на расширение может быть уменьшено. Может ли кто-нибудь помочь? – Vinay

Смежные вопросы