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:
- Otwórz zaćmienie.
- postępuj zgodnie z instrukcjami zawartymi w wtyczce Eclipse > Zainstaluj z sekcji update Site w sekcji Download TestNG.
- Uruchom ponownie Eclipse, aby zmiany odniosły skutek.
- Wybierz Plik > Nowy > Projekt Java.
- wprowadź MyFirstTestNGProject dla nazwy projektu i kliknij Dalej.
- wybierz kartę Biblioteki i kliknij Dodaj bibliotekę.
- Wybierz TestNG i kliknij Dalej.
- kliknij przycisk Zakończ, aby ustawić domyślną bibliotekę TestNG dla tego projektu.
- kliknij Dodaj zewnętrzne słoiki… i przejdź do miejsca zapisania plików Selenium JAR.
-
Dodaj wszystkie pliki JAR wewnątrz folderów selenium – i libs:
-
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:
- kliknij prawym przyciskiem myszy folder src i wybierz New > Other…:
-
Wybierz klasę TestNG, a następnie kliknij Dalej:
-
kliknij Przeglądaj… aby wybrać folder źródłowy, wybierz myfirsttestngproject > src i kliknij OK.
-
wprowadź następujące informacje:
- Nazwa pakietu: myfirsttestngpackage
- Nazwa klasy: MyFirstTestNGFile
- @BeforeTest: true
- @ AfterTest: prawda
-
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 metodaf
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:
-
wyszukaj::
public class MyFirstTestNGFile {
-
dodaj poniższy kod w następnej linii. Spowoduje to utworzenie zmiennej
driver
typu WebDriver:public WebDriver driver;
-
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:
-
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.
-
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.html
w 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ę @Test
o 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:
- Otwórz Firefoksa i przejdź do
http://localhost:8080/index.html
. - Użyj narzędzi programistycznych, aby sprawdzić element.
-
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ł: -
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
-
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:
- wpisz MxAdmin jako nazwę użytkownika.
- wpisz 1 jako hasło.
- kliknij przycisk login.
5.6 Dodaj trzecią metodę testową
aby dodać trzecią metodę testową, wykonaj następujące kroki:
- Otwórz aplikację i w Eksploratorze aplikacji otwórz stronę ProgramDetail.
-
wybierz kartę wydatki:
nazwa zakładki wydatki to tabPage4. Każdy element automatycznie otrzyma klasę CSS
mx-name-
, więc karta wydatki otrzyma klasę CSSmx-name-tabPage4
, gdy aplikacja jest uruchomiona. -
wróć do Eclipse.
-
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 klasymx-name-tabPage4
. Klasa zakładki wydatki tomx-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:
- Otwórz Studio Pro, a następnie otwórz stronę Desktop_AdminMenu.
-
wybierz przycisk Nowy koszt:
Nazwa nowego przycisku To
newButton3
, więc przycisk będzie miał klasę CSSmx-name-newButton3
: -
Otwórz stronę Desktop_Expense_NewEdit_Admin.
-
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.
-
wróć do Eclipse.
-
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:
- kliknij nowy wydatek.
- wyczyść pole kwota.
- wpisz 15.00 w polu Kwota.
- wybierz drugą opcję z menu rozwijanego opis.
- 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:
- Otwórz Studio Pro, a następnie otwórz fragment Desktop_MyInfo.
-
Znajdź nazwę następującego elementu:
Element Nazwa przycisk Wyloguj się signOutButton1
-
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:
- kliknij prawym przyciskiem myszy folder MyFirstTestNGProject.
-
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:
-
kliknij prawym przyciskiem myszy folder MyFirstTestNGProject i wybierz Odśwież. Zostanie utworzony folder test-output:
-
Otwórz folder test-output.
-
kliknij prawym przyciskiem myszy indeks.plik html.
-
wybierz Otwórz w przeglądarce >. Raport będzie wyglądał tak:
-
kliknij (pokaż). Metody badań są pokazane Alfabetycznie:
-
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.
- kliknij prawym przyciskiem myszy folder src i wybierz New > Other.
-
Otwórz folder XML i wybierz plik XML:
-
kliknij Dalej.
-
Zmień nazwę pliku na MyFirstTestSuite.xml.
-
kliknij Zakończ, aby utworzyć plik XML:
-
kliknij kartę źródło:
-
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
. -
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.
- Pobierz ChromeDriver tutaj: https://sites.google.com/a/chromium.org/chromedriver/downloads.
- Pobierz IEDriver tutaj: http://selenium-release.storage.googleapis.com/index.html.
-
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 przypadkubrowser
) z test suite XML. Jeśli parametr przeglądarki wynosichrome
, 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.
-
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;
-
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ądarkichrome
. Ten parametr zostanie użyty w metodzie@BeforeTest
w pliku MyFirstTestNGFile. -
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