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


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

  1. Słuchacze WebDrivera
  2. TestNG Słuchacze

W tym samouczku omówimy Testowanie Słuchacze.

W czym jest Słuchacz TestNG?

Listener jest zdefiniowany jako interfejs modyfikujący wartość domyślną TestNGZachowanie. Jak sama nazwa wskazuje, Listeners „nasłuchują” zdarzenia zdefiniowanego w skrypcie selenium i zachowują się odpowiednio. Jest on używany w selenium poprzez implementację interfejsu Listeners. Umożliwia dostosowywanie TestNG raporty lub dzienniki. Istnieje wiele rodzajów TestNG dostępnych słuchaczy.

Słuchacze w TestNG

Rodzaje słuchaczy w TestNG

Istnieje wiele typów słuchaczy, co pozwala na zmianę TestNGzachowanie.

Poniżej kilka TestNG słuchacze:

  1. IAnnotationTransformer,
  2. IAnnotationTransformer2 ,
  3. IKonfigurowalny,
  4. IConfigurationListener,
  5. IExecutionLister,
  6. Możliwość zaczepienia,
  7. IInvokedMethodListener,
  8. IInvokedMethodListener2 ,
  9. IMethodInterceptor,
  10. IReporter,
  11. ISuiteSłuchacz,
  12. ITestListener.

Powyższy interfejs to tzw TestNG Słuchacze. Te interfejsy są używane w selenium do generowania logów lub dostosowywania TestNG raporty.

W tym samouczku zaimplementujemy ITestListener.

ITestListener ma następujące metody

  • OnStart- Metoda OnStart jest wywoływana po uruchomieniu dowolnego testu.
  • onTestSuccess- Metoda onTestSuccess jest wywoływana w przypadku powodzenia dowolnego testu.
  • onTestFailure- Metoda onTestFailure jest wywoływana w przypadku niepowodzenia dowolnego testu.
  • onTestSkipped- Metoda onTestSkipped jest wywoływana w przypadku pominięcia dowolnego testu.
  • onTestFailedButWinSuccessProcent- metoda jest wywoływana za każdym razem, gdy test kończy się niepowodzeniem, ale mieści się w procentach sukcesu.
  • onFinish- Metoda onFinish jest wywoływana po wykonaniu wszystkich testów.

Scenariusz testowy

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

  1. Uruchom Firefox i otwórz witrynę http://demo.guru99.com/V4/
  2. Scenariusz testowy

  3. Zaloguj się do aplikacji.
  4. Scenariusz testowy

Kroki, aby utworzyć TestNG Słuchacz

Dla powyższego scenariusza testowego zaimplementujemy Listener.

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

Kroki tworzenia TestNG Słuchacz

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

package Listener_Demo;		

import org.testng.ITestContext ;		
import org.testng.ITestListener ;		
import org.testng.ITestResult ;		

public class ListenerTest implements ITestListener						
{		

    @Override		
    public void onFinish(ITestContext arg0) {					
        // TODO Auto-generated method stub				
        		
    }		

    @Override		
    public void onStart(ITestContext arg0) {					
        // TODO Auto-generated method stub				
        		
    }		

    @Override		
    public void onTestFailedButWithinSuccessPercentage(ITestResult arg0) {					
        // TODO Auto-generated method stub				
        		
    }		

    @Override		
    public void onTestFailure(ITestResult arg0) {					
        // TODO Auto-generated method stub				
        		
    }		

    @Override		
    public void onTestSkipped(ITestResult arg0) {					
        // TODO Auto-generated method stub				
        		
    }		

    @Override		
    public void onTestStart(ITestResult arg0) {					
        // TODO Auto-generated method stub				
        		
    }		

    @Override		
    public void onTestSuccess(ITestResult arg0) {					
        // TODO Auto-generated method stub				
        		
    }		
}		

Zmodyfikujmy klasę 'ListenerTest'. W szczególności zmodyfikujemy następujące metody-

onTestFailure, onTestSkipped, onTestStart, onTestSuccess, etc.

Modyfikacja jest prosta. Po prostu drukujemy nazwę testu.

Dzienniki tworzone są w konsoli. Użytkownikowi łatwo jest zrozumieć, który test jest pozytywny, negatywny i pominięty.

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

package Listener_Demo;		

import org.testng.ITestContext;		
import org.testng.ITestListener;		
import org.testng.ITestResult;		

public class ListenerTest implements ITestListener						
{		

    @Override		
    public void onFinish(ITestContext Result) 					
    {		
                		
    }		

    @Override		
    public void onStart(ITestContext Result)					
    {		
            		
    }		

    @Override		
    public void onTestFailedButWithinSuccessPercentage(ITestResult Result)					
    {		
    		
    }		

    // When Test case get failed, this method is called.		
    @Override		
    public void onTestFailure(ITestResult Result) 					
    {		
    System.out.println("The name of the testcase failed is :"+Result.getName());					
    }		

    // When Test case get Skipped, this method is called.		
    @Override		
    public void onTestSkipped(ITestResult Result)					
    {		
    System.out.println("The name of the testcase Skipped is :"+Result.getName());					
    }		

    // When Test case get Started, this method is called.		
    @Override		
    public void onTestStart(ITestResult Result)					
    {		
    System.out.println(Result.getName()+" test case started");					
    }		

    // When Test case get passed, this method is called.		
    @Override		
    public void onTestSuccess(ITestResult Result)					
    {		
    System.out.println("The name of the testcase passed is :"+Result.getName());					
    }		

}			

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

package 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 {				
WebDriver driver= new FirefoxDriver();					

// Test to pass as to verify listeners .		
@Test		
public void Login()				
{		
    driver.get("http://demo.guru99.com/V4/");					
    driver.findElement(By.name("uid")).sendKeys("mngr34926");							
    driver.findElement(By.name("password")).sendKeys("amUpenu");							
    driver.findElement(By.name("btnLogin")).click();					
}		

// Forcefully failed this test as to verify listener.		
@Test		
public void TestToFail()				
{		
    System.out.println("This method to test fail");					
    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 Listeners (@Listeners), jak pokazano poniżej:

@Listeners(Listener_Demo.ListenerTest.class)

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

Tak więc ostatecznie wygląda klasa „TestCases” po użyciu adnotacji Listener:

package 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 {				
WebDriver driver= new FirefoxDriver();					

//Test to pass as to verify listeners.		
@Test		
public void Login()				
{		
    driver.get("http://demo.guru99.com/V4/");					
    driver.findElement(By.name("uid")).sendKeys("mngr34926");							
    driver.findElement(By.name("password")).sendKeys("amUpenu");							
    driver.findElement(By.id("")).click();					
}		

//Forcefully failed this test as verify listener.		
@Test		
public void TestToFail()				
{		
    System.out.println("This method to test fail");					
    Assert.assertTrue(false);			
}		
}			

Struktura projektu wygląda następująco:

Kroki tworzenia TestNG Słuchacz

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

Krok 5): Sprawdź dane wyjściowe dzienników wyświetlane w konsoli.

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

Kroki tworzenia TestNG Słuchacz

[TestNG] Running:		
C:\Users\gauravn\AppData\Local\Temp\testng-eclipse--1058076918\testng-customsuite.xml		

Login Test Case started		
The name of the testcase passed is:Login		
TestToFail test case started		
This method to test fail		
The name of the testcase failed is:TestToFail		
PASSED: Login		
FAILED: TestToFail		
java.lang.AssertionError: expected [true] but found [false]

Użycie Listenera dla wielu klas.

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

W takich przypadkach możemy utworzyć plik testng.xml i dodać znacznik listeners w formacie XML.

Użycie słuchacza dla wielu klas

Ten odbiornik jest zaimplementowany w całym zestawie testów, niezależnie od liczby posiadanych klas. Po uruchomieniu tego pliku XML słuchacze będą pracować na wszystkich wymienionych klasach. Możesz także zadeklarować dowolną liczbę klas słuchacza.

Podsumowanie

Odbiorniki są wymagane do generowania dzienników lub dostosowywania TestNG raporty w Selenium Sterownik internetowy.

  • Istnieje wiele typów słuchaczy i można ich używać zgodnie z wymaganiami.
  • Słuchacze to interfejsy używane w skrypcie sterownika internetowego selenu
  • Zademonstrowano użycie Listenera w Selenium
  • Zaimplementowano detektory dla wielu klas