TestNG @Test Priority w Selenium

Spisie treści:

Anonim

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.

  1. Metody o tej samej wartości priorytetu.
  2. 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