tworzenie automatycznych testów za pomocą TestNG

1 Wprowadzenie

automatyczne testy można tworzyć za pomocą różnych narzędzi, w zależności od rodzaju testów. Testy integracyjne mogą być tworzone za pomocą SoapUI, testy jednostkowe za pomocą modułu testowania jednostkowego, a testy UI za pomocą Selenium IDE. Dzięki Selenium IDE możesz tworzyć skrypty wspomagające automatyzację testów eksploracyjnych. Jeśli chcesz tworzyć solidne testy oparte na przeglądarce, powinieneś rozważyć użycie platformy testowej z Selenium.

TestNG to framework testujący Javę, który może być używany do napędzania Selenium. W tym poradniku dowiesz się, jak utworzyć automatyczny test za pomocą TestNG.

ten poradnik nauczy Cię, jak wykonać następujące czynności:

  • tworzenie plików testowych TestNG
  • uruchamianie automatycznych testów za pomocą TestNG
  • generowanie raportów za pomocą TestNG

2 Wymagania wstępne

przed rozpoczęciem korzystania z tego poradnika upewnij się, że spełniłeś następujące wymagania wstępne:

  • Pobierz i zainstaluj Eclipse
  • Pobierz klienta Selenium & WebDriver dla Java

ten poradnik wykorzystuje szablon aplikacji wydatki firmy, zaczynając od sekcji Dodaj trzecią metodę testową dla przykładowego scenariusza. Jednak ten szablon aplikacji nie jest już obsługiwany przez platformę Mendix. Dlatego sekcje wykorzystujące ten szablon aplikacji mogą być używane tylko jako odniesienia, a nie jako sekcje, które można uzupełnić krok po kroku.

3 Tworzenie projektu Java

w tym rozdziale zainstalujesz wtyczkę TestNG i utworzysz projekt Java w Eclipse zawierający Biblioteki TestNG i Selenium:

  1. Otwórz zaćmienie.
  2. postępuj zgodnie z instrukcjami zawartymi w wtyczce Eclipse > Zainstaluj z sekcji update Site w sekcji Download TestNG.
  3. Uruchom ponownie Eclipse, aby zmiany odniosły skutek.
  4. Wybierz Plik > Nowy > Projekt Java.
  5. wprowadź MyFirstTestNGProject dla nazwy projektu i kliknij Dalej.
  6. wybierz kartę Biblioteki i kliknij Dodaj bibliotekę.
  7. Wybierz TestNG i kliknij Dalej.
  8. kliknij przycisk Zakończ, aby ustawić domyślną bibliotekę TestNG dla tego projektu.
  9. kliknij Dodaj zewnętrzne słoiki… i przejdź do miejsca zapisania plików Selenium JAR.
  10. Dodaj wszystkie pliki JAR wewnątrz folderów selenium – i libs:

  11. kliknij przycisk Zakończ, aby utworzyć projekt Java. MyFirstTestNGProject zostanie wyświetlony w Eksploratorze pakietów:

zakończyłeś konfigurowanie swojego projektu!

4 Utwórz plik TestNG

aby utworzyć nowy plik TestNG, wykonaj następujące czynności:

  1. kliknij prawym przyciskiem myszy folder src i wybierz New > Other…:
  2. Wybierz klasę TestNG, a następnie kliknij Dalej:

  3. kliknij Przeglądaj… aby wybrać folder źródłowy, wybierz myfirsttestngproject > src i kliknij OK.

  4. wprowadź następujące informacje:

    • Nazwa pakietu: myfirsttestngpackage
    • Nazwa klasy: MyFirstTestNGFile
    • @BeforeTest: true
    • @ AfterTest: prawda

  5. kliknij Zakończ. Szablon dla pierwszego pliku TestNG zostanie utworzony automatycznie:

    adnotacja @Test służy do stwierdzenia, że metoda pod nią jest przypadkiem testowym. W tym przypadku metoda f jest przypadkiem testowym. Adnotacja @BeforeTest jest używana do stwierdzenia, że metoda pod nią zostanie wykonana przed pierwszym przypadkiem testowym. Adnotacja @AfterTest służy do stwierdzenia, że metoda pod nią zostanie wykonana po ostatnim przypadku testowym.

5 Tworzenie przypadku testowego

zakodujmy teraz twój przypadek testowy.

5.1 Dodaj WebDriver

aby utworzyć zmienną do użycia dla Webdrivera, wykonaj następujące kroki:

  1. wyszukaj::

    public class MyFirstTestNGFile {
  2. dodaj poniższy kod w następnej linii. Spowoduje to utworzenie zmiennej driver typu WebDriver:

    public WebDriver driver;
  3. naciśnij Ctrl + Shift + O, aby zorganizować import. Spowoduje to zaimportowanie brakujących instrukcji i usunięcie nieużywanych instrukcji importu. Zaimportowane zostanie następujące oświadczenie:

    import org.openqa.selenium.WebDriver;

5.2 Add a BeforeTest Method

adnotacja @BeforeTest jest używana do stwierdzenia, że metoda pod nią zostanie wykonana przed pierwszym przypadkiem testowym. Przed pierwszym przypadkiem testowym otwórz przeglądarkę Firefox, wykonując następujące czynności:

  1. Zmień następujący kod:

    @BeforeTestpublic void beforeTest() {}

    na:

    @BeforeTestpublic void beforeTest() { driver = new FirefoxDriver();}

    spowoduje to utworzenie nowej instancji Sterownika Firefox i otwarcie przeglądarki Firefox.

  2. naciśnij CTRL + SHIFT + O. zaimportowana zostanie następująca instrukcja:

    import org.openqa.selenium.firefox.FirefoxDriver;

5.3 Dodaj metodę AfterTest

adnotacja @AfterTest jest używana do stwierdzenia, że metoda pod nią zostanie wykonana po ostatnim przypadku testowym. Po ostatnim przypadku testowym zamknij przeglądarkę, zmieniając następujący kod:

@AfterTestpublic void afterTest() {}

na:

@AfterTestpublic void afterTest() {driver.close();}

spowoduje to zamknięcie przeglądarki Firefox.

5.4 Dodaj pierwszą metodę testową

aby dodać pierwszą metodę testową, Otwórz adres URL w przeglądarce, a następnie zmień następujący kod:

@Testpublic void f() {}

na:

@Test(priority=1)public void openApp() {driver.get("http://localhost:8080/index.html");}

ta metoda testowa otworzy adres URL http://localhost:8080/index.htmlw przeglądarce Firefox. Domyślnie metody opisane przez @Test są wykonywane Alfabetycznie. Za pomocą parametrów można modyfikować funkcję adnotacji. Parametr priority może być użyty do wykonania metod w innej kolejności. TestNG wykona adnotację @Testo najniższym priorytecie do największego.

5.5 dodaj drugą metodę testową

teraz, gdy jesteś w oknie logowania, będziesz chciał się zalogować. Aby dodać drugą metodę badania, wykonaj następujące kroki:

  1. Otwórz Firefoksa i przejdź do http://localhost:8080/index.html.
  2. Użyj narzędzi programistycznych, aby sprawdzić element.
  3. kliknij pole wprowadzania nazwy użytkownika. ID tego pola to usernameInput. Selektor CSS ID to hashtag (#) + nazwa ID. Dla pola Nazwa użytkownika będzie to #usernameInput. Ta sama zasada jest stosowana w innych krokach. Selektor CSS # usernameInput jest unikalny. Istnieje jeden pasujący węzeł:

  4. powtórz kroki 5-6 dla pola wprowadzania hasła i przycisku logowania:

    Element Selektor CSS
    pole wprowadzania hasła #passwordInput
    przycisk Zaloguj się #loginButton
  5. Dodaj nową metodę testową o nazwie login. Użyj następującego kodu:

    @Test(priority=2)public void login() { driver.findElement(By.cssSelector("#usernameInput")).sendKeys("MxAdmin"); driver.findElement(By.cssSelector("#passwordInput")).sendKeys("1"); driver.findElement(By.cssSelector("#loginButton")).click();}

ta metoda badania zawiera następujące etapy badania:

  1. wpisz MxAdmin jako nazwę użytkownika.
  2. wpisz 1 jako hasło.
  3. kliknij przycisk login.

5.6 Dodaj trzecią metodę testową

aby dodać trzecią metodę testową, wykonaj następujące kroki:

  1. Otwórz aplikację i w Eksploratorze aplikacji otwórz stronę ProgramDetail.
  2. wybierz kartę wydatki:

    nazwa zakładki wydatki to tabPage4. Każdy element automatycznie otrzyma klasę CSS mx-name-, więc karta wydatki otrzyma klasę CSS mx-name-tabPage4, gdy aplikacja jest uruchomiona.

  3. wróć do Eclipse.

  4. Dodaj nową metodę testową o nazwie openExpensesTab. Użyj następującego kodu:

    @Test(priority=3)public void openExpensesTab() { WebDriverWait wait = new WebDriverWait(driver, 10); wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector(".mx-name-tabPage4"))).click();}

    ta metoda testowa wywołuje ExpectedCondition co 500 milisekund, dopóki nie powróci pomyślnie lub nie upłynie 10 sekund. Po upływie 10 sekund i nie zlokalizowaniu elementu zostanie wyrzucony wyjątek TimeoutException. Jeśli element znajduje się w ciągu 10 sekund, metoda kliknie element o nazwie klasy mx-name-tabPage4. Klasa zakładki wydatki to mx-name-tabPage4. Selektor CSS klasy to kropka (.) + nazwa klasy, więc Dla zakładki wydatki będzie to .mx-name-tabPage4.

5.7 Dodaj czwartą metodę testową

teraz, gdy jesteś na karcie wydatki, będziesz chciał utworzyć nowy wydatek. Aby dodać czwartą metodę badania, wykonaj następujące kroki:

  1. Otwórz Studio Pro, a następnie otwórz stronę Desktop_AdminMenu.
  2. wybierz przycisk Nowy koszt:

    Nazwa nowego przycisku To newButton3, więc przycisk będzie miał klasę CSS mx-name-newButton3 :

  3. Otwórz stronę Desktop_Expense_NewEdit_Admin.

  4. Znajdź nazwy następujących elementów (tak jak w kroku 3):

    Element Nazwa
    pole kwoty textBox6
    rozwijana lista opisów referenceSelector1
    przycisk Zapisz saveButton1
    The name of an element in your app may be different than the name shown in the Name column. In step 7, use the name of the element of your app.
  5. wróć do Eclipse.

  6. Dodaj nową metodę testową o nazwie createExpense. Użyj następującego kodu:

    @Test(priority=4)public void createExpense() { driver.findElement(By.cssSelector(".mx-name-newButton3")).click(); driver.findElement(By.cssSelector(".mx-window-active .mx-name-textBox6 input")).clear(); driver.findElement(By.cssSelector(".mx-window-active .mx-name-textBox6 input")).sendKeys("15.00"); driver.findElement(By.cssSelector(".mx-window-active .mx-name-referenceSelector1 option:nth-child(2)")).click(); driver.findElement(By.cssSelector(".mx-window-active .mx-name-saveButton1")).click();}

    ta metoda badania zawiera następujące etapy badania:

    1. kliknij nowy wydatek.
    2. wyczyść pole kwota.
    3. wpisz 15.00 w polu Kwota.
    4. wybierz drugą opcję z menu rozwijanego opis.
    5. Kliknij Zapisz.

    po kliknięciu nowego wydatku (.mx-name-newButton3) pojawi się wyskakujące okno. Aby upewnić się, że element aktywnej strony jest pobierany (co w tym przypadku jest wyskakującym okienkiem), musisz dodać .mx-window-active do selektora CSS elementów w wyskakującym okienku.

    dla każdego pola wejściowego musisz dodać input na końcu selektora CSS.

    domyślną wartością pola amount jest 0.00. Aby wprowadzić nową wartość, musisz najpierw wyczyścić to pole.

    selektor referencyjny ma sześć opcji; pusty, zakwaterowanie, posiłek, inne, zapasy, Transport. Aby wybrać Accomodation (druga opcja), musisz dodać option:nth-child(2) na końcu selektora CSS.

5.8 Dodaj piątą metodę testową

po utworzeniu wydatków będziesz chciał się wylogować. Aby dodać piątą metodę badania, wykonaj następujące kroki:

  1. Otwórz Studio Pro, a następnie otwórz fragment Desktop_MyInfo.
  2. Znajdź nazwę następującego elementu:

    Element Nazwa
    przycisk Wyloguj się signOutButton1
  3. Dodaj nową metodę testową o nazwie signOut. Użyj następującego kodu:

    @Test(priority=5)public void signOut() { driver.findElement(By.cssSelector(".mx-name-signOutButton1")).click();}

    ta metoda testowa kliknie element o nazwie klasy mx-name-signOutButton1.

6 Uruchom Test

jesteś teraz gotowy do uruchomienia testu. Aby uruchomić test, wykonaj następujące kroki:

  1. kliknij prawym przyciskiem myszy folder MyFirstTestNGProject.
  2. wybierz Uruchom jako > Test:

    wyniki testu zostaną wyświetlone w oknie konsoli oraz w oknie wyników testu:

7 raport z testu

TestNG generuje raporty w formacie HTML. Aby przetestować raport, wykonaj następujące kroki:

  1. kliknij prawym przyciskiem myszy folder MyFirstTestNGProject i wybierz Odśwież. Zostanie utworzony folder test-output:

  2. Otwórz folder test-output.

  3. kliknij prawym przyciskiem myszy indeks.plik html.

  4. wybierz Otwórz w przeglądarce >. Raport będzie wyglądał tak:

  5. kliknij (pokaż). Metody badań są pokazane Alfabetycznie:

  6. kliknij Widok chronologiczny. Zostanie pokazany przegląd metod w porządku chronologicznym:

8 Tworzenie pakietu testowego

po uruchomieniu testu, tak jak w przypadku uruchomienia testu, pakiet testowy jest tworzony automatycznie. Ten pakiet testowy zawiera wszystkie pliki testNG, które można znaleźć w projekcie. Ale co, jeśli chcesz przeprowadzić tylko określone testy? Niż trzeba utworzyć pakiet testowy samodzielnie.

  1. kliknij prawym przyciskiem myszy folder src i wybierz New > Other.
  2. Otwórz folder XML i wybierz plik XML:

  3. kliknij Dalej.

  4. Zmień nazwę pliku na MyFirstTestSuite.xml.

  5. kliknij Zakończ, aby utworzyć plik XML:

  6. kliknij kartę źródło:

  7. Zmień następujący kod:

    <?xml version="1.0" encoding="UTF-8"?>

    do

    <?xml version="1.0" encoding="UTF-8"?><suite name="MyFirstTestSuite"> <test name="Test1"> <classes> <class name="myfirsttestngpackage.MyFirstTestNGFile" /> </classes> </test></suite>

    spowoduje to utworzenie nowego pakietu testowego MyFirstTestSuite. Pakiet testowy zawiera jeden test: Test1. Test zawiera jeden plik testNG, myfirsttestngpackage.MyFirstTestNGFile.

  8. kliknij prawym przyciskiem myszy MyFirstTestSuite.plik xml i wybierz Uruchom jako > 1 TestNG Suite.

Dobra robota! Stworzyłeś swój pierwszy pakiet TestNG!

9 Uruchom pakiet testowy na wielu przeglądarkach, używając @Parameters

utworzony test jest teraz uruchamiany tylko na Firefoksie. Aby upewnić się, że funkcjonalność działa zgodnie z oczekiwaniami w innych przeglądarkach, musisz przeprowadzić testowanie wielu przeglądarek. Dzięki TestNG bardzo łatwo jest wykonać ten sam test na różnych przeglądarkach.

  1. Pobierz ChromeDriver tutaj: https://sites.google.com/a/chromium.org/chromedriver/downloads.
  2. Pobierz IEDriver tutaj: http://selenium-release.storage.googleapis.com/index.html.
  3. w Eclipse otwórz plik MyFirstTestNGFile i zmień następujący kod:

    @BeforeTestpublic void beforeTest() { driver = new FirefoxDriver();}

    na:

    @Parameters("browser")@BeforeTestpublic void beforeTest(String browser) { if(browser.equalsIgnoreCase("chrome")){ System.setProperty("webdriver.chrome.driver", "C://Selenium/chromedriver.exe"); driver = new ChromeDriver(); } else if(browser.equalsIgnoreCase("ie")){ System.setProperty("webdriver.ie.driver", "C://Selenium/IEDriverServer.exe"); driver = new InternetExplorerDriver(); } else{ driver = new FirefoxDriver(); }}

    @Parameters służy do wstawienia parametru (w tym przypadku browser) z test suite XML. Jeśli parametr przeglądarki wynosi chrome, uruchomi się Sterownik Chrome.

    w tej sekcji chromedriver.exe jest przechowywany w C://Selenium folder. Pamiętaj, aby użyć właściwej ścieżki w tym kodzie.

  4. naciśnij Ctrl + Shift + O, A zaimportowane zostaną następujące polecenia:

    import org.openqa.selenium.chrome.ChromeDriver;import org.openqa.selenium.ie.InternetExplorerDriver;import org.testng.annotations.Parameters;
  5. Otwórz MyFirstTestSuite i zmień następujący kod

    <?xml version="1.0" encoding="UTF-8"?><suite name="MyFirstTestSuite"> <test name="Test1"> <classes> <class name="myfirsttestngpackage.MyFirstTestNGFile" /> </classes> </test></suite>

    na:

    <?xml version="1.0" encoding="UTF-8"?><suite name="MyFirstTestSuite"> <test name="ChromeTest"> <parameter name="browser" value="chrome" /> <classes> <class name="myfirsttestngpackage.MyFirstTestNGFile" /> </classes> </test> <test name="IETest"> <parameter name="browser" value="ie" /> <classes> <class name="myfirsttestngpackage.MyFirstTestNGFile" /> </classes> </test> <test name="FirefoxTest"> <parameter name="browser" value="firefox" /> <classes> <class name="myfirsttestngpackage.MyFirstTestNGFile" /> </classes> </test></suite>

    pierwszy test (nazywany ChromeTest) ma parametr przeglądarki chrome. Ten parametr zostanie użyty w metodzie @BeforeTest w pliku MyFirstTestNGFile.

  6. kliknij prawym przyciskiem myszy MyFirstTestSuite.pliku xml i wybierz Uruchom jako > TestNG Suite:

Dobra robota! Stworzyłeś swój pierwszy automatyczny test cross-browser z TestNG!

teraz wiesz, jak utworzyć plik testowy TestNG, jak utworzyć pakiet testowy i jak uruchomić automatyczne testy na wielu przeglądarkach.

udanych testów!

10 Czytaj więcej

  • Testuj Aplikacje Mendix za pomocą Selenium IDE
  • Testuj mikroflory za pomocą modułu testowania jednostkowego

Leave a Reply

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.