TestNG Lyttere inn Selenium


Det er to hovedlyttere.

  1. WebDriver-lyttere
  2. TestNG lyttere

I denne opplæringen vil vi diskutere om Testng Lyttere.

Hva er lyttere i TestNG?

Listener er definert som grensesnitt som endrer standarden TestNGsin oppførsel. Som navnet antyder Lyttere "lytter" til hendelsen definert i selenmanuset og oppfører seg deretter. Det brukes i selen ved å implementere Listeners Interface. Det tillater tilpasning TestNG rapporter eller logger. Det finnes mange typer TestNG lyttere tilgjengelig.

Lyttere inn TestNG

Typer av lyttere i TestNG

Det er mange typer lyttere som lar deg endre TestNGsin oppførsel.

Nedenfor er de få TestNG lyttere:

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

Grensesnittet ovenfor kalles TestNG Lyttere. Disse grensesnittene brukes i selen for å generere logger eller tilpasse TestNG rapporter.

I denne opplæringen vil vi implementere ITestListener.

ITestListener har følgende metoder

  • OnStart- OnStart-metoden kalles når en test starter.
  • onTestSuccess- onTestSuccess-metoden kalles på suksessen til enhver test.
  • onTestFailure- onTestFailure-metoden kalles ved feil på en test.
  • på test hoppet over- onTestSkipped-metoden kalles ved hoppet over en hvilken som helst test.
  • onTestFailedButWithinSuccessPercentage- metoden kalles hver gang Test mislykkes, men er innenfor suksessprosenten.
  • på Finish- onFinish-metoden kalles etter at alle testene er utført.

Testscenario

I dette testscenarioet vil vi automatisere påloggingsprosessen og implementere 'ItestListener'.

  1. Start Firefox og åpne siden https://demo.guru99.com/V4/
  2. Testscenario

  3. Logg inn på applikasjonen.
  4. Testscenario

Trinn for å lage en TestNG lytteren

For testscenarioet ovenfor vil vi implementere Listener.

Trinn 1) Lag klassen "ListenerTest" som implementerer 'ITestListener'. Flytt musen over tekst med rød linje, og Eclipse vil foreslå deg 2 hurtigreparasjoner som vist på skjermen nedenfor:

Trinn for å lage en TestNG lytteren

Bare klikk på "Legg til uimplementerte metoder". Flere uimplementerte metoder (uten kropp) legges til koden. Sjekk nedenfor-

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

La oss endre 'ListenerTest'-klassen. Spesielt vil vi endre følgende metoder-

onTestFailure, onTestSkipped, onTestStart, onTestSuccess, etc.

Modifikasjonen er enkel. Vi skriver bare ut navnet på testen.

Logger opprettes i konsollen. Det er lett for brukeren å forstå hvilken test som er bestått, ikke bestått og hopp over.

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

}			

Trinn 2) Opprett en annen klasse "TestCases" for automatisering av påloggingsprosessen. Selenium vil utføre denne 'TestCases' for å logge på automatisk.

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("https://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);			
}		
}

Trinn 3) Deretter implementerer du denne lytteren i vår vanlige prosjektklasse, dvs. "TestCases". Det er to forskjellige måter å koble til klassen og grensesnittet på.

Den første måten er å bruke lytternes kommentarer (@Listeners) som vist nedenfor:

@Listeners(Listener_Demo.ListenerTest.class)

Vi bruker dette i klassen "TestCases" som vist nedenfor.

Så endelig ser klassen "TestCases" ut etter å ha brukt Lytter-kommentar:

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("https://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);			
}		
}			

Prosjektstrukturen ser slik ut:

Trinn for å lage en TestNG lytteren

Trinn 4): Kjør klassen "TestCases". Metoder i klassen "ListenerTest" kalles automatisk i henhold til oppførselen til metoder som er annotert som @Test.

Trinn 5): Bekreft at utdataene som logger vises på konsollen.

Utdata fra 'TestCases' vil se slik ut:

Trinn for å lage en TestNG lytteren

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

Bruk av Listener for flere klasser.

Hvis prosjektet har flere klasser, kan det være vanskelig å legge til lyttere til hver av dem.

I slike tilfeller kan vi lage en testng.xml og legge til lytter-tag i XML.

Bruk av lytter for flere klasser

Denne lytteren er implementert i hele testpakken uavhengig av antall klasser du har. Når du kjører denne XML-filen, vil lytterne fungere på alle nevnte klasser. Du kan også deklarere et hvilket som helst antall lytterklasser.

Sammendrag

Lyttere er pålagt å generere logger eller tilpasse TestNG rapporterer i Selenium Webdriver.

  • Det finnes mange typer lyttere og kan brukes etter behov.
  • Lyttere er grensesnitt som brukes i selen-nettdriverskript
  • Demonstrerte bruken av Listener i Selenium
  • Implementerte lytterne for flere klasser