TestNG Lyssnare in Selenium: ITestListener & ITestResult Exempel


Det finns två huvudlyssnare.

  1. WebDriver-lyssnare
  2. TestNG lyssnare

I den här handledningen kommer vi att diskutera Testng Lyssnare.

Vad är lyssnare i TestNG?

Listener definieras som gränssnitt som ändrar standarden TestNGs beteende. Som namnet antyder Lyssnare "lyssnar" på händelsen som definieras i selenmanuset och beter sig därefter. Det används i selen genom att implementera Listeners Interface. Det tillåter anpassning TestNG rapporter eller loggar. Det finns många typer av TestNG lyssnare tillgängliga.

Lyssnare in TestNG

Typer av lyssnare i TestNG

Det finns många typer av lyssnare som låter dig ändra TestNGs beteende.

Nedan är några få TestNG lyssnare:

  1. IAnnotationTransformer,
  2. IAnnotationTransformer2 ,
  3. IKonfigurerbar,
  4. IConfigurationListener,
  5. IExecutionListener,
  6. Ikrokbar,
  7. IInvokedMethodListener ,
  8. IInvokedMethodListener2 ,
  9. ImethodInterceptor,
  10. IReporter,
  11. ISuiteListener,
  12. ITestListener.

Gränssnittet ovan kallas TestNG Lyssnare. Dessa gränssnitt används i selen för att generera loggar eller anpassa TestNG rapporter.

I den här handledningen kommer vi att implementera ITestListener.

ITestListener har följande metoder

  • OnStart- OnStart-metoden anropas när något test startar.
  • onTestSuccess- onTestSuccess-metoden anropas på framgången för ett test.
  • onTestFailure- onTestFailure-metoden anropas om ett test misslyckas.
  • onTest Skipped- onTestSkipped-metoden anropas vid överhoppad test.
  • onTestFailedButWithinSuccessPercentage- metod anropas varje gång Test misslyckas men ligger inom framgångsprocenten.
  • på Finish- onFinish-metoden anropas efter att alla tester har utförts.

Testscenario

I detta testscenario kommer vi att automatisera inloggningsprocessen och implementera 'ItestListener'.

  1. Starta Firefox och öppna webbplatsen http://demo.guru99.com/V4/
  2. Testscenario

  3. Logga in i applikationen.
  4. Testscenario

Steg för att skapa en TestNG Lyssnare

För ovanstående testscenario kommer vi att implementera Listener.

Steg 1) Skapa klassen "ListenerTest" som implementerar 'ITestListener'. Flytta musen över text med röd linje och Eclipse kommer att föreslå dig två snabba lösningar som visas på skärmen nedan:

Steg för att skapa en TestNG Lyssnare

Klicka bara på "Lägg till oimplementerade metoder". Flera oimplementerade metoder (utan en kropp) läggs till i koden. Kolla nedan-

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				
        		
    }		
}		

Låt oss ändra klassen 'ListenerTest'. I synnerhet kommer vi att modifiera följande metoder-

onTestFailure, onTestSkipped, onTestStart, onTestSuccess, etc.

Modifieringen är enkel. Vi skriver bara ut namnet på testet.

Loggar skapas i konsolen. Det är lätt för användaren att förstå vilket test som är godkänt, underkänd och hoppa över status.

Efter modifiering ser koden ut som-

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());					
    }		

}			

Steg 2) Skapa en annan klass "TestCases" för automatisering av inloggningsprocessen. Selenium kommer att utföra detta 'TestCases' för att logga in automatiskt.

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);			
}		
}

Steg 3) Därefter implementerar du denna lyssnare i vår vanliga projektklass, dvs. "TestCases". Det finns två olika sätt att ansluta till klassen och gränssnittet.

Det första sättet är att använda Listeners-kommentarer (@Listeners) som visas nedan:

@Listeners(Listener_Demo.ListenerTest.class)

Vi använder detta i klassen "TestCases" som visas nedan.

Så äntligen ser klassen "TestCases" ut efter att ha använt Lyssnarannotering:

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);			
}		
}			

Projektstrukturen ser ut som:

Steg för att skapa en TestNG Lyssnare

Steg 4): Kör klassen "TestCases". Metoder i klassen "ListenerTest" anropas automatiskt enligt beteendet hos metoder som är kommenterade som @Test.

Steg 5): Verifiera utdata som loggar visas på konsolen.

Utdata från 'TestCases' kommer att se ut så här:

Steg för att skapa en TestNG Lyssnare

[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]

Användning av Listener för flera klasser.

Om projektet har flera klasser kan det vara besvärligt och felbenäget att lägga till lyssnare till var och en av dem.

I sådana fall kan vi skapa en testng.xml och lägga till lyssnartagg i XML.

Användning av Listener för flera klasser

Den här lyssnaren implementeras i hela testsviten oavsett antalet klasser du har. När du kör den här XML-filen kommer lyssnare att fungera på alla nämnda klasser. Du kan också deklarera valfritt antal lyssnarklasser.

Sammanfattning

Lyssnare måste generera loggar eller anpassa TestNG rapporterar i Selenium Webdriver.

  • Det finns många typer av lyssnare och kan användas enligt kraven.
  • Lyssnare är gränssnitt som används i selenwebbdrivrutinskript
  • Demonstrerade användningen av Listener i Selenium
  • Implementerade lyssnarna för flera klasser