Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Серия статей: Advanced Page Object Pattern in Automation Testing (ENG)


(Дмитрий Жарий) #1

Недавно мне попалась на глаза серия статей посвященных шаблонам проектирования в автоматизации тестирования

Advanced Page Object Pattern in Automation Testing

И самая первая статья посвящена PageObject с достаточно нестандартной реализацией.
Автор предлагает разделить PageObject на 3 части:

  • главный класс PageObject аггрегирующий объекты двух последующих классов:
  • класс маппинга элементов
  • класс валидации, содержащий Assert’ы

Тесты в свою очередь выглядит так:

    [TestMethod]
    public void SearchTextInBing_Advanced_PageObjectPattern()
    {
        BingMainPage bingMainPage = new BingMainPage();
        bingMainPage.Navigate();
        bingMainPage.Search("Automate The Planet");
        bingMainPage.Validate().ResultsCount(",000 RESULTS");
    }

(Sergey Pirogov) #2

Слишком много кода на С# - режет глаза =))


(5am) #3

мне не очень нравится идея ассертов в page object’ах

у меня видение такое:

  • Page Object’ы это продукт
  • Test это тестировщик

Test манипулирует с PageObject’ами аля тестировщик работает с страницами продукта из браузера
Продукт не может знать - корректные данные он выводит или нет, он их может либо показать либо не показать.

Test аля тестировщик - сам решает (ассертит) корректные данные предоставил сайт или нет.


(Дмитрий Жарий) #4

Так точно, вызов проверки все равно идет из теста:

bingMainPage.Validate().ResultsCount(",000 RESULTS");

Можно, конечно, объявить этот метод и в самом PageObject, но тогда нарушается Single Responsibility из SOLID – а в этом примере – отдельный класс для проверок.

Но, я бы все таки по привычке написал:
bingMainPage.GetResultsCount().Should().BeGreaterThan(1000)

``