TestNG to platforma testowa, która obejmuje różne typy projektów testów, takie jak test jednostkowy, test funkcjonalny, test end-to-end, test interfejsu użytkownika i test integracji.
Możesz uruchomić jeden lub wiele przypadków testowych w kodzie Testng.
Jeśli priorytet testu nie jest zdefiniowany podczas uruchamiania wielu przypadków testowych, TestNG przypisuje wszystkim @Test priorytet zerowy (0).
Teraz podczas biegania; niższe priorytety zostaną zaplanowane jako pierwsze.
W tym samouczku nauczysz się -
- Demo kodu TestNG bez priorytetu
- Demo kodu TestNG bez priorytetu w porządku alfabetycznym
- Jak ustawić priorytet w TestNG
- Metody o tym samym priorytecie
- Łączenie metod z priorytetami (o tym samym priorytecie) i bez priorytetów
Demo kodu TestNG bez priorytetu
Weźmy scenariusz, w którym sekwencjonowanie będzie wymagane, aby przejść wszystkie przypadki testowe:
Scenariusz: wygeneruj kod, w którym musisz przeprowadzić wyszukiwanie w Google za pomocą określonego słowa kluczowego, powiedz „Facebook”. Teraz sprawdź, czy tytuł przeglądarki został zmieniony na „Facebook - wyszukiwarka Google”.
Uwaga: każdy krok, który kodujesz, powinien być oddzielnymi metodami
Metoda 1 : Otwórz przeglądarkę, powiedz Firefox (openBrowser ())
Metoda 2 : Uruchom Google.com (launchGoogle ())
Metoda 3 : Przeprowadź wyszukiwanie za pomocą „Facebook” (performSearchAndClick1stLink ())
Metoda 4 : Zweryfikuj tytuł strony wyszukiwania Google (FaceBookPageTitleVerification ())
Kod dla naszego scenariusza :
import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.firefox.FirefoxDriver;import org.testng.Assert;import org.testng.annotations.Test;public class Priority_In_testNG {Sterownik WebDriver;// Metoda 1: Otwórz przeglądarkę, powiedz Firefox@Testpublic void openBrowser () {driver = nowy FirefoxDriver ();}// Metoda 2: Uruchom Google.com@Testpublic void launchGoogle () {driver.get („http://www.google.co.in”);}// Metoda 3: Przeprowadź wyszukiwanie za pomocą „Facebook”@Testpublic void peformSeachAndClick1stLink () {driver.findElement (By.xpath (".//*[@ title = 'Wyszukaj']")). sendKeys ("Facebook");}// Metoda 4: Zweryfikuj tytuł strony wyszukiwania Google.@Testpublic void FaceBookPageTitleVerification () zgłasza wyjątek {driver.findElement (By.xpath (".//*[@ value = 'Wyszukaj']")). click ();Thread.sleep (3000);Assert.assertEquals (driver.getTitle (). Zawiera ("Facebook - wyszukiwarka Google"), prawda);}}
Wyjaśnienie kodu
Jak wspomniano powyżej, stworzyliśmy 4 przypadki testowe do wykonywania każdej akcji w niezależnych metodach.
- Pierwsza metoda (openBrowser) określa, aby zainicjować przeglądarkę Firefox.
- Druga metoda (launchGoogle) stwierdza, że uruchomienie Google.com odbywa się w zainicjowanej przeglądarce.
- Trzecia metoda (peformSeachAndClick1stLink) stwierdza, że przeprowadza wyszukiwanie w polu wyszukiwania (z xpath („.//*[@title='Search ']”) z wyszukiwanym hasłem Facebook i
- Czwarta i ostatnia metoda (FaceBookPageTitleVerification) stwierdza, że należy kliknąć ikonę wyszukiwania Google i sprawdzić, czy tytuł przeglądarki został zmieniony na Facebook - wyszukiwarka Google.
Teraz uruchom ten kod za pomocą testNG, jak pokazano na filmie, w którym zobaczysz, że wszystkie przypadki testowe zawodzą. Przyczyna niepowodzenia: ponieważ istnieje zależność od poprzedniego przypadku testowego do zaliczenia, tylko bieżący działający przypadek testowy zostanie zaliczony.
W tym przypadku,
- Pierwsza wykonywana metoda to openBrowser (). Przeszedł, ponieważ nie ma żadnej zależności.
- Druga wykonywana metoda to FaceBookPageTitleVerification (); kończy się niepowodzeniem, ponieważ próbujemy kliknąć przycisk wyszukiwania i zweryfikować tytuł przeglądarki.
- Możesz zobaczyć, że jeśli aktywność wyszukiwania nie jest przetwarzana, to w jaki sposób można przejść każdy inny krok. Dlatego właśnie zawodzą moje przypadki testowe.
PASSED: openBrowserNIEUDANA: FaceBookPageTitleVerificationNIEUDANE: uruchom GoogleNIEUDANE: peformSeachAndClick1stLink
Demo kodu TestNG bez priorytetu w porządku alfabetycznym
Jeśli nie podamy żadnego priorytetu, testng wykona metody @Test na podstawie kolejności alfabetycznej ich nazw metod, niezależnie od miejsca ich implementacji w kodzie.
pakiet com.guru.testngannotations;import org.testng.annotations.Test;public class TestNG_Priority_Annotations {@Testpublic void c_method () {System.out.println ("Jestem w metodzie C");}@Testpublic void b_method () {System.out.println ("Jestem w metodzie B");}@Testpublic void a_method () {System.out.println ("Jestem w metodzie A");}@Testpublic void e_method () {System.out.println ("Jestem w metodzie E");}@Testpublic void d_method () {System.out.println ("Jestem w metodzie D");}}
Wynik
Jestem w metodzie AJestem w metodzie B.Jestem w metodzie CJestem w metodzie D.Jestem w metodzie E.
Chociaż zdefiniowaliśmy metody w sposób losowy (c, b, a, e, d), testng wykonywał metody w oparciu o ich nazwy metod, biorąc pod uwagę kolejność alfabetyczną i to samo zostało również odzwierciedlone w wynikach.
Jak ustawić priorytet w TestNG
Jak widzieliście w poprzednim przykładzie, wymagane jest sekwencjonowanie, aby przejść ten scenariusz, więc będziemy modyfikować poprzedni fragment kodu za pomocą parametru Priority Parameter , aby każdy test był wykonywany zgodnie z przypisanym im priorytetem.
Jak widać, przypisaliśmy Priorytet każdemu przypadkowi testowemu, co oznacza, że przypadek testowy o niższym priorytecie zostanie wykonany jako pierwszy.
Priorytet w testNG w akcji
import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.firefox.FirefoxDriver;import org.testng.Assert;import org.testng.annotations.Test;public class Priority_In_testNG {Sterownik WebDriver;// Metoda 1: Otwórz przeglądarkę, powiedz Firefox@Test (priorytet = 1)public void openBrowser () {driver = nowy FirefoxDriver ();}// Metoda 2: Uruchom Google.com@Test (priorytet = 2)public void launchGoogle () {driver.get („http://www.google.co.in”);}// Metoda 3: Przeprowadź wyszukiwanie za pomocą „Facebook”@Test (priorytet = 3)public void peformSeachAndClick1stLink () {driver.findElement (By.xpath (".//*[@ title = 'Wyszukaj']")). sendKeys ("Facebook");}// Metoda 4: Zweryfikuj tytuł strony wyszukiwania Google.@Test (priorytet = 4)public void FaceBookPageTitleVerification () zgłasza wyjątek {driver.findElement (By.xpath (".//*[@ value = 'Wyszukaj']")). click ();Thread.sleep (3000);Assert.assertEquals (driver.getTitle (). Zawiera ("Facebook - wyszukiwarka Google"), prawda);}}
Wyjaśnienie kodu
Po przypisaniu priorytetu każdemu przypadkowi testowemu, uruchom powyższy kod za pomocą testNG, jak pokazano na Video-2 wspomnianym poniżej.
Tutaj możesz zobaczyć, że przypadki testowe są traktowane priorytetowo. Przypadki testowe o niższym priorytecie są wykonywane jako pierwsze, tj. Teraz w przypadkach testowych wykonywane jest sekwencyjne wykonanie zgodnie z priorytetem. Dlatego wszystkie przypadki testowe przechodzą teraz.
Zwróć uwagę na konsolę zaćmienia:
Dane wyjściowe :
PASSED: openBrowserPASSED: uruchom GooglePASSED: peformSearchAndClick1stLinkPASSED: FaceBookPageTitleVerification
Numer 0 ma najwyższy priorytet (zostanie wykonany jako pierwszy), a priorytet zależy od podanej liczby, tj. 0 ma najwyższy priorytet niż 1. 1 ma wyższy priorytet niż 2 i tak dalej.
pakiet com.guru.testngannotations;import org.testng.annotations.Test;public class TestNG_Priority_Annotations {@Test (priorytet = 6)public void c_method () {System.out.println ("Jestem w metodzie C");}@Test (priorytet = 9)public void b_method () {System.out.println ("Jestem w metodzie B");}@Test (priorytet = 1)public void a_method () {System.out.println ("Jestem w metodzie A");}@Test (priorytet = 0)public void e_method () {System.out.println ("Jestem w metodzie E");}@Test (priorytet = 3)public void d_method () {System.out.println ("Jestem w metodzie D");}}
Wynik
Jestem w metodzie E.Jestem w metodzie AJestem w metodzie D.Jestem w metodzie CJestem w metodzie B.
Tutaj podaliśmy priorytety jako 0, 1, 3, 6, 9. Zatem najpierw wykonywana jest metoda z priorytetem 0, a następnie metoda z priorytetem-1 i tak dalej. Tutaj nazwa metody kolejności alfabetycznej nie będzie brana pod uwagę, ponieważ podaliśmy priorytety
Metody o tym samym priorytecie:
Może istnieć szansa, że metody mogą mieć ten sam priorytet. W takich przypadkach testng bierze pod uwagę alfabetyczną kolejność nazw metod, których priorytet jest taki sam.
pakiet com.guru.testngannotations;import org.testng.annotations.Test;public class TestNG_Priority_Annotations {@Test (priorytet = 6)public void c_method () {System.out.println ("Jestem w metodzie C");}@Test (priorytet = 9)public void b_method () {System.out.println ("Jestem w metodzie B");}@Test (priorytet = 6)public void a_method () {System.out.println ("Jestem w metodzie A");}@Test (priorytet = 0)public void e_method () {System.out.println ("Jestem w metodzie E");}@Test (priorytet = 3)public void d_method () {System.out.println ("Jestem w metodzie D");}}
Wynik
Jestem w metodzie E.Jestem w metodzie D.Jestem w metodzie AJestem w metodzie CJestem w metodzie B.
Tutaj „e” i „d” są wykonywane na podstawie ich wartości priorytetów. Ale metody „a” i „c” mają tę samą wartość priorytetową (6). Tak więc tutaj testng rozważa kolejność alfabetyczną „a” i „c” i odpowiednio je wykonuje.
Łączenie metod z priorytetami (o tym samym priorytecie) i bez priorytetów:
W tym przypadku omówimy dwa przypadki w jednej klasie testng.
- Metody o tej samej wartości priorytetu.
- Więcej niż jedna metoda bez priorytetu.
pakiet com.guru.testngannotations;import org.testng.annotations.Test;public class TestNG_Priority_Annotations {@Test()public void c_method () {System.out.println ("Jestem w metodzie C");}@Test()public void b_method () {System.out.println ("Jestem w metodzie B");}@Test (priorytet = 6)public void a_method () {System.out.println ("Jestem w metodzie A");}@Test (priorytet = 0)public void e_method () {System.out.println ("Jestem w metodzie E");}@Test (priorytet = 6)public void d_method () {System.out.println ("Jestem w metodzie D");}}
Wynik:
Jestem w metodzie B.Jestem w metodzie CJestem w metodzie E.Jestem w metodzie AJestem w metodzie D.
PASSED: b_methodPASSED: c_methodPASSED: e_methodPASSED: a_methodPASSED: d_method
Wyjaśnienie:
Pierwsza preferencja: Metody bez priorytetów: „c” i „b”: Na podstawie kolejności alfabetycznej „b” zostało wykonane jako pierwsze, a następnie „c”.
Druga preferencja: Metody z priorytetami: „a”, „e” i „d”: „e” zostało wykonane jako pierwsze, ponieważ miało najwyższy priorytet (0). Ponieważ priorytety metod „a” i „d” były takie same, testng rozważył kolejność alfabetyczną nazw ich metod. Więc między nimi najpierw wykonano „a”, a następnie „d”.
W TestNG rozróżniana jest wielkość liter
Dla twojej informacji istnieje standardowa składnia do definiowania priorytetu w testNG tj @Test (priorytet = 4) , przypuśćmy , że definiujesz go w innej składni powiedz @Test (PRIORITY = 1), a twoje IDE pokaże to jako błąd kompilacji . Zobacz zdjęcie poniżej:
Wniosek:
Jak widzieliście, jeśli istnieje wymóg uruchomienia zestawu przypadków testowych w określonej kolejności, można to łatwo zrobić za pomocą Priority, używając narzędzia testNG jako narzędzia do uruchamiania.
Ten samouczek jest możliwy dzięki wkładowi Ramandeep Singha i Rama Krishna Gadde