TestNG Luisteraars binnen Selenium: ITestListener & ITestResult-voorbeeld


Er zijn twee belangrijke luisteraars.

  1. WebDriver-luisteraars
  2. TestNG luisteraars

In deze tutorial bespreken we verder Testen Luisteraars.

Waar zitten luisteraars in? TestNG?

Listener wordt gedefinieerd als een interface die de standaard wijzigt TestNG's gedrag. Zoals de naam al doet vermoeden, luisteren Listeners naar de gebeurtenis die is gedefinieerd in het selenium-script en gedragen ze zich dienovereenkomstig. Het wordt gebruikt in selenium door Listeners Interface te implementeren. Het maakt het mogelijk om TestNG rapporten of logboeken. Er zijn veel soorten TestNG luisteraars beschikbaar.

Luisteraars binnen TestNG

Soorten luisteraars in TestNG

Er zijn veel soorten luisteraars waarmee u de TestNG's gedrag.

Hieronder staan ​​er een paar TestNG luisteraars:

  1. IAnnotatieTransformer ,
  2. IAnnotatieTransformer2 ,
  3. IConfigureerbaar,
  4. IConfiguratieListener,
  5. IExecutionListener,
  6. IkHaakbaar,
  7. IInvokedMethodListener ,
  8. IInvokedMethodListener2 ,
  9. IMethodeInterceptor ,
  10. IRporter,
  11. ISuiteListener,
  12. ITestListener.

Bovenstaande interface wordt genoemd TestNG Luisteraars. Deze interfaces worden in Selenium gebruikt om logs te genereren of de TestNG rapporten.

In deze tutorial zullen we de ITestListener implementeren.

ITestListener heeft de volgende methoden

  • AanStart- De OnStart-methode wordt aangeroepen wanneer een test start.
  • opTestSucces- De onTestSuccess-methode wordt aangeroepen op basis van het succes van een test.
  • opTestFailure- De onTestFailure-methode wordt aangeroepen bij het mislukken van een test.
  • opTestOvergeslagen- De onTestSkipped-methode wordt aangeroepen bij het overslaan van elke test.
  • opTestMisluktMaarBinnenSuccesPercentage- De methode wordt elke keer aangeroepen als de Test mislukt, maar binnen het succespercentage ligt.
  • aanFinish- De onFinish-methode wordt aangeroepen nadat alle tests zijn uitgevoerd.

Testscenario

In dit testscenario automatiseren we het inlogproces en implementeren we de 'ItestListener'.

  1. Start de Firefox en open de site https://demo.guru99.com/V4/
  2. Testscenario

  3. Log in op de applicatie.
  4. Testscenario

Stappen voor het maken van een TestNG Luisteraar

Voor het bovenstaande testscenario implementeren we Listener.

Stap 1) Creëer klasse “ListenerTest” die ‘ITestListener’ implementeert. Beweeg de muis over rode lijntekst, en Eclipse zal u twee snelle oplossingen voorstellen, zoals weergegeven in het onderstaande scherm:

Stappen voor het maken van een TestNG Luisteraar

Klik gewoon op "Niet-geïmplementeerde methoden toevoegen". Er zijn meerdere niet-geïmplementeerde methoden (zonder hoofdtekst) aan de code toegevoegd. Kijk hieronder-

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

Laten we de 'ListenerTest'-klasse aanpassen. In het bijzonder zullen we de volgende methoden aanpassen:

onTestFailure, onTestSkipped, onTestStart, onTestSuccess, etc.

De wijziging is eenvoudig. We drukken gewoon de naam van de test af.

Logboeken worden aangemaakt in de console. De gebruiker kan gemakkelijk begrijpen welke test de status 'geslaagd', 'mislukt' of 'overgeslagen' heeft.

Na wijziging ziet de code er als volgt uit:

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

}			

Stap 2) Maak een andere klasse “TestCases” voor de automatisering van het inlogproces. Selenium zal deze 'TestCases' uitvoeren om automatisch in te loggen.

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

Stap 3) Implementeer deze luisteraar vervolgens in onze reguliere projectklasse, dwz "TestCases". Er zijn twee verschillende manieren om verbinding te maken met de klasse en interface.

De eerste manier is om de luisteraarsannotatie (@Listeners) te gebruiken, zoals hieronder weergegeven:

@Listeners(Listener_Demo.ListenerTest.class)

We gebruiken dit in de klasse “TestCases” zoals hieronder weergegeven.

Dus uiteindelijk ziet de klasse "TestCases" er uit na gebruik van de Listener-annotatie:

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

De projectstructuur ziet er als volgt uit:

Stappen voor het maken van een TestNG Luisteraar

Stap 4): Voer de klasse "TestCases" uit. Methoden in de klasse “ListenerTest” worden automatisch aangeroepen volgens het gedrag van methoden die zijn geannoteerd als @Test.

Stap 5): Controleer de uitvoer die wordt geregistreerd op de console.

De uitvoer van de 'TestCases' ziet er als volgt uit:

Stappen voor het maken van een TestNG Luisteraar

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

Gebruik van Listener voor meerdere lessen.

Als het project meerdere klassen heeft, kan het toevoegen van luisteraars aan elk van deze klassen omslachtig en foutgevoelig zijn.

In dergelijke gevallen kunnen we een testng.xml maken en een listenerstag in XML toevoegen.

Gebruik van Listener voor meerdere klassen

Deze luisteraar wordt in de hele testsuite geïmplementeerd, ongeacht het aantal klassen dat u heeft. Wanneer u dit XML-bestand uitvoert, werken luisteraars aan alle genoemde klassen. U kunt ook een willekeurig aantal luisteraarklassen declareren.

Samenvatting

Luisteraars moeten logboeken genereren of aanpassen TestNG rapporten in Selenium Webdriver.

  • Er zijn veel soorten luisteraars en deze kunnen afhankelijk van de vereisten worden gebruikt.
  • Listeners zijn interfaces die worden gebruikt in Selenium web driver scripts
  • Het gebruik van Listener gedemonstreerd in Selenium
  • Implementeerde de Listeners voor meerdere klassen