Przyszedł w końcu czas na Page Object Model, czyli na to, co pozwala nam sprawić, że nasze testy będą łatwiejsze w utrzymaniu i zarządzaniu. Ten wzorzec projektowy pozwala także na sprawniejsze pisanie testów w oparciu o już stworzone metody.
Uwaga: plik z projektem testowym, na którym pracujemy w lekcjach dotyczących POM wymaga uzyskania dostępu. Dostaniesz go tutaj.
W tym wstępie do POM dowiesz się na czym on z grubsza polega i jakie są jego założenia. Pokażę Ci także jakie są korzyści z takiego podejścia, ale jestem pewna, że wraz z kolejnymi lekcjami znajdziesz kilka dodatkowych. Do kilku podstawowych korzyści należą:
- jeżeli coś się zmieni na stronie, to będziemy zmieniać jedynie Page Objecty, bez ingerencji w klasy testowe,
- łatwiejsze zarządzanie i utrzymanie kodu,
- prostsze i krótsze nazwy metod (ponieważ jesteśmy już w jakimś kontekście),
- krótszy i czytelniejszy kod testów,
- łatwiejsze pisanie nowych testów (podpowiedzi).
Tworzenie swojego własnego frameworka w użyciu o Page Object Model jest też moim zdaniem świetnym sposobem dla aspirującego testera automatyzującego, żeby ostatecznie zrozumieć podstawowe paradygmaty programowania obiektowego.
W tej lekcji pokażę Ci też jak przygotować się do następnych lekcji dotyczących Page Object Model i skąd ściągnąć projekt, na którym będziemy pracować.
Przydatne linki
Krótkie wprowadzenie do Page Object Design Pattern na seleniumhq.org.
Projekt testowy na podstawie którego będziemy tworzyć framework.
Plik z gotowym projektem – tutaj uzyskasz dostęp do niego.
Omówienia do projektu testowego: pierwsze, drugie i trzecie.
Cześć,
w nagraniu od 3:30 do 3:41 mówisz, że jedyną weryfikacją jaka możemy, a nawet powinniśmy umieścić w Page Object’ach jest weryfikacja czy jesteśmy na właściwej stronie i że pokażesz to nam później.
Obejrzałem wszystkie lekcje w tym module (13. Page Object Model) i nie zauważyłem żebyś to gdzieś tłumaczyła.
Przegapiłem coś, czy jeszcze będzie w kolejnych modułach?
Wydaje mi się, że nie będzie, bo w międzyczasie zmieniło mi się podejście i jednak uznałam, że to nie jest najszczęśliwszy pomysł. Page Objecty mają być bez bibliotek typu JUnit.
ok, dzięki. W sumie racja, bo nawet pokazywałaś jak w pom.xml ograniczyć scope dla JUnit tylko do test.