Menu Zamknij

Dobre praktyki związane z pisaniem testów automatycznych przy użyciu Selenium WebDriver cz.1

W tym artykule postaram się opisać wybrane dobre praktyki, które mogą zostać wykorzystane podczas pisania testów automatycznych w Selenium WebDriver.

Jaka jest potrzeba tworzenia frameworka? Stosowanie frameworka ułatwia pracę, pozwala na dziele się wiedzą, może być standardem do tworzenia projektów wewnątrz firmy.

Stworzenie projektu

Postaram się stworzyć framework testów automatycznych w języku C# w oparciu o stronę http://automationpractice/.

Zaczynam od stworzenia projektu testowego o nazwie SeleniumTestFramework przy użyciu Visual Studio.

Używam tutaj biblioteki NUnit (inne popularne dla testów pisanych w .NET to MSTest oraz xUnit). Udostępnia ona atrybut TestFixture – oznacza klasę testową, Test- oznacza metodę jako test, SetUp – oznacza metodę inicjalizującą, która zostanie wykonana przed każdym testem, TearDown – oznacza metodę, która zostanie wykonana po każdym teście.

Następnie dodajemy do naszego projektu Nuget Package – Selenium.Support, Selenium.WebDriver.ChromeDriver.

Page Object Pattern

Często używanym wzorcem w testach automatycznych jest Page Object Pattern. Wzorzec ten zakłada opakowanie elementów znajdujących się na stronie oraz akcji, które można wykonać na tych elementach w odpowiednie klasy.

Zalety używania Page Object Pattern to między innymi:

– ułatwienie w zarządzaniu strukturą testów

– unikanie duplikacji kodu

– testy są bardziej czytelne.

Stwórzmy w naszym projekcie katalog Pages gdzie będziemy przechowywać wszystkie klasy z Page’ami. Następnie stworzymy klasę, która będzie odzwierciedlać stronę główną

Przekazujemy obiekt drivera w konstruktorze klasy MainPage.

Pierwszy test

Przejdźmy teraz do napisania pierwszego testu. Tworzymy katalog Tests, w którym będziemy przechowywać testy. Napiszemy test, który będzie wpisywał w pole do wyszukiwania tekst „Dress” a następnie sprawdzimy, czy strona zwróciła oczekiwany rezultat. W tym celu stworzymy nowy Page – SearchResultPage. 

W teście wykorzystamy MainPage oraz SearchResultPage.

BaseTest

Stworzymy również klasę bazowa dla testów Base Page, której będzie przechowywać metody z atrybutem SetUp oraz TearDown, które będą odpalać się przed i po każdym teście.

Konfiguracja testów

Zauważmy, że zahadkodowaliśmy w kodzie klasy bazowej testów url do aplikacji oraz rodzaj używanego drivera. Aby można było w łatwy sposób konfigurować url testowanej aplikacji oraz na jakiej przeglądarce będzie odpalać testy możemy dodać plik konfiguracyjny xml/json do naszego projektu. W tym pliku będziemy trzymać potrzebne informacje.
Następnie stworzymy model w którym będzie przechowywać te informacje.
Oraz stworzymy klasę Configuration w ktorej będziemy będziemy bindować konfigurację z pliku appsettings.json do naszego modelu.

Należy jeszcze zmienić klasę bazową.

W ten sposób zmieniając konfigurację w pliku appsettings.json będziemy mogli odpalać testy na różnych przeglądarkach oraz na różnych środowiskach (local, test, dev, uat, prod).

W kolejnej części tego artykułu przedstawię inna dobre praktyki, które warto zastosować podczas tworzenia frameworka do tworzenia testów automatycznych. Kod z powyższego artkułu można znaleźć tutaj: https://github.com/KatarzynaKluszczynskaGit/SeleniumTestFramework

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *