Słuchacze TestNG w Selenium: ITestListener & Przykład ITestResult

Spisie treści:

Anonim

Jest dwóch głównych słuchaczy.

  1. WebDriver Listeners
  2. Słuchacze TestNG

W tym samouczku omówimy Testng Listeners. Oto, czego się nauczysz-

  • Co to są słuchacze w TestNG?
  • Typy słuchaczy w TestNG
  • Scenariusz testowy:
  • Kroki, aby utworzyć odbiornik TestNG
  • Użycie Listenera dla wielu klas.

Co to są słuchacze w TestNG?

Odbiornik jest zdefiniowany jako interfejs, który modyfikuje domyślne zachowanie TestNG. Jak sama nazwa wskazuje, Słuchacze „nasłuchują” zdarzenia zdefiniowanego w skrypcie selenowym i odpowiednio się zachowują. Jest używany w selenie poprzez implementację interfejsu Listeners. Umożliwia dostosowywanie raportów lub dzienników TestNG. Dostępnych jest wiele typów słuchaczy TestNG.

Typy słuchaczy w TestNG

Istnieje wiele typów słuchaczy, które pozwalają na zmianę zachowania TestNG.

Poniżej znajduje się kilku słuchaczy TestNG:

  1. IAnnotationTransformer,
  2. IAnnotationTransformer2,
  3. IConfigurable,
  4. IConfigurationListener,
  5. IExecutionListener,
  6. I do gotowania,
  7. IInvokedMethodListener,
  8. IInvokedMethodListener2,
  9. IMethodInterceptor,
  10. IReporter,
  11. ISuiteListener,
  12. ITestListener.

Powyższy interfejs nazywa się odbiornikami TestNG. Te interfejsy są używane w selenie do generowania dzienników lub dostosowywania raportów TestNG.

W tym samouczku zaimplementujemy metodę ITestListener.

ITestListener ma następujące metody

  • Metoda OnStart- OnStart jest wywoływana podczas uruchamiania dowolnego testu.
  • onTestSuccess- onTestSuccess jest wywoływana po pomyślnym zakończeniu dowolnego testu.
  • onTestFailure- onTestFailure jest wywoływana w przypadku niepowodzenia dowolnego testu.
  • onTestSkipped- onTestSkipped jest wywoływana w przypadku pominięcia dowolnego testu.
  • onTestFailedButWithinSuccessPercentage- metoda jest wywoływana za każdym razem, gdy Test kończy się niepowodzeniem, ale mieści się w zakresie procentowego sukcesu.
  • Metoda onFinish- onFinish jest wywoływana po wykonaniu wszystkich testów.

Scenariusz testowy:

W tym scenariuszu testowym zautomatyzujemy proces logowania i zaimplementujemy „ItestListener”.

  1. Uruchom przeglądarkę Firefox i otwórz witrynę „http://demo.guru99.com/V4/”
  1. Zaloguj się do aplikacji.

Kroki, aby utworzyć odbiornik TestNG

W powyższym scenariuszu testowym zaimplementujemy Listener.

Krok 1) Utwórz klasę „ListenerTest”, która implementuje „ITestListener”. Najedź myszą na tekst z czerwoną linią, a Eclipse zasugeruje 2 szybkie poprawki, jak pokazano na poniższym ekranie:

Wystarczy kliknąć „Dodaj niezaimplementowane metody”. Do kodu dodawanych jest wiele niezaimplementowanych metod (bez treści). Sprawdź poniżej-

pakiet Listener_Demo;import org.testng.ITestContext;import org.testng.ITestListener;import org.testng.ITestResult;publiczna klasa ListenerTest implementuje ITestListener{@Nadpisaniepublic void onFinish (ITestContext arg0) {// TODO Automatycznie wygenerowany kod pośredniczący metody}@Nadpisaniepublic void onStart (ITestContext arg0) {// TODO Automatycznie wygenerowany kod pośredniczący metody}@Nadpisaniepublic void onTestFailedButWithinSuccessPercentage (ITestResult arg0) {// TODO Automatycznie wygenerowany kod pośredniczący metody}@Nadpisaniepublic void onTestFailure (ITestResult arg0) {// TODO Automatycznie wygenerowany kod pośredniczący metody}@Nadpisaniepublic void onTestSkipped (ITestResult arg0) {// TODO Automatycznie wygenerowany kod pośredniczący metody}@Nadpisaniepublic void onTestStart (ITestResult arg0) {// TODO Automatycznie wygenerowany kod pośredniczący metody}@Nadpisaniepublic void onTestSuccess (ITestResult arg0) {// TODO Automatycznie wygenerowany kod pośredniczący metody}}

Zmodyfikujmy klasę „ListenerTest”. W szczególności zmodyfikujemy następujące metody:

onTestFailure, onTestSkipped, onTestStart, onTestSuccess itp.

Modyfikacja jest prosta. Po prostu drukujemy nazwę testu.

Dzienniki są tworzone w konsoli. Użytkownik może łatwo zrozumieć, który test jest zaliczony, niezaliczony lub pominięty.

Po modyfikacji kod wygląda następująco:

pakiet Listener_Demo;import org.testng.ITestContext;import org.testng.ITestListener;import org.testng.ITestResult;publiczna klasa ListenerTest implementuje ITestListener{@Nadpisaniepublic void onFinish (wynik ITestContext){}@Nadpisaniepublic void onStart (wynik ITestContext){}@Nadpisaniepublic void onTestFailedButWithinSuccessPercentage (wynik ITestResult){}// Gdy przypadek testowy się nie powiedzie, wywoływana jest ta metoda.@Nadpisaniepublic void onTestFailure (wynik ITestResult){System.out.println ("Nazwa przypadku testowego nie powiodła się: + Result.getName ());}// Gdy przypadek testowy zostanie pominięty, wywoływana jest ta metoda.@Nadpisaniepublic void onTestSkipped (wynik ITestResult){System.out.println ("Nazwa pominiętej sprawy testowej to: + Result.getName ());}// Po uruchomieniu przypadku testowego ta metoda jest wywoływana.@Nadpisaniepublic void onTestStart (wynik ITestResult){System.out.println (Result.getName () + "przypadek testowy rozpoczęty");}// Po przekazaniu przypadku testowego wywoływana jest ta metoda.@Nadpisaniepublic void onTestSuccess (wynik ITestResult){System.out.println ("Nazwa przekazanej sprawy testowej to: + Result.getName ());}}

Krok 2) Utwórz kolejną klasę „TestCases” do automatyzacji procesu logowania. Selenium wykona te „TestCases”, aby zalogować się automatycznie.

pakiet Listener_Demo;import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.firefox.FirefoxDriver;import org.testng.Assert;import org.testng.annotations.Listeners;Import org.testng.annotations.Test;public class TestCases {Sterownik WebDriver = nowy FirefoxDriver ();// Test, aby przejść jako, aby zweryfikować słuchacze.@Testpublic void Zaloguj się (){driver.get („http://demo.guru99.com/V4/”);driver.findElement (By.name ("uid")). sendKeys ("mngr34926");driver.findElement (By.name ("hasło")). sendKeys ("amUpenu");driver.findElement (By.name ("btnLogin")). click ();}// Wymuszono niepowodzenie tego testu, aby zweryfikować odbiornik.@Testpublic void TestToFail (){System.out.println ("Ta metoda testu zakończyła się niepowodzeniem");Assert.assertTrue (false);}}

Krok 3) Następnie zaimplementuj ten detektor w naszej zwykłej klasie projektu, tj. „TestCases”. Istnieją dwa różne sposoby łączenia się z klasą i interfejsem.

Pierwszym sposobem jest użycie adnotacji słuchaczy (@Listeners), jak pokazano poniżej:

@Listeners (Listener_Demo.ListenerTest.class) 

Używamy tego w klasie „TestCases”, jak pokazano poniżej.

W końcu klasa „TestCases” wygląda tak po użyciu adnotacji Listener:

pakiet Listener_Demo;import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.firefox.FirefoxDriver;import org.testng.Assert;import org.testng.annotations.Listeners;import org.testng.annotations.Test;@Listeners (Listener_Demo.ListenerTest.class)public class TestCases {Sterownik WebDriver = nowy FirefoxDriver ();// Test, aby przejść jako, aby zweryfikować słuchacze.@Testpublic void Zaloguj się (){driver.get („http://demo.guru99.com/V4/”);driver.findElement (By.name ("uid")). sendKeys ("mngr34926");driver.findElement (By.name ("hasło")). sendKeys ("amUpenu");driver.findElement (By.id ("")). click ();}// Wymuszenie niepowodzenia tego testu jako odbiornika weryfikacji.@Testpublic void TestToFail (){System.out.println ("Ta metoda testu zakończyła się niepowodzeniem");Assert.assertTrue (false);}}

Struktura projektu wygląda następująco:

Krok 4): Wykonaj klasę „TestCases”. Metody z klasy „ListenerTest” są wywoływane automatycznie zgodnie z zachowaniem metod oznaczonych jako @Test.

Krok 5): Sprawdź, czy dane wyjściowe, które rejestrują, są wyświetlane na konsoli.

Dane wyjściowe „przypadków testowych” będą wyglądać następująco:

[TestNG] Trwa:C: \ Users \ gauravn \ AppData \ Local \ Temp \ testng-eclipse - 1058076918 \ testng-customsuite.xmlUruchomiono przypadek testowy logowaniaNazwa przekazanego testu to: LoginUruchomiono przypadek testowy TestToFailTa metoda testowania kończy się niepowodzeniemNazwa przypadku testowego nie powiodła się: TestToFailPASSED: Zaloguj sięFAILED: TestToFailjava.lang.AssertionError: oczekiwano [true], ale znaleziono [false] 

Użycie Listenera dla wielu klas.

Jeśli projekt ma wiele klas, dodanie detektorów do każdej z nich może być kłopotliwe i podatne na błędy.

W takich przypadkach możemy stworzyć testng.xml i dodać znacznik słuchaczy w XML.

Ten detektor jest zaimplementowany w całym zestawie testów, niezależnie od liczby posiadanych klas. Po uruchomieniu tego pliku XML nasłuchiwanie będzie działać na wszystkich wspomnianych klasach. Możesz również zadeklarować dowolną liczbę klas nasłuchiwania.

Podsumowanie:

Słuchacze są zobowiązani do generowania dzienników lub dostosowywania raportów TestNG w Selenium Webdriver.

  • Istnieje wiele typów słuchaczy i można ich używać zgodnie z wymaganiami.
  • Odbiorniki to interfejsy używane w skrypcie sterownika sieciowego selenu
  • Zademonstrował użycie Listenera w Selenie
  • Zaimplementowano Listeners dla wielu klas