TestNG Ouvintes em Selenium: Exemplo de ITestListener e ITestResult


Existem dois ouvintes principais.

  1. Ouvintes do WebDriver
  2. TestNG Ouvintes

Neste tutorial, discutiremos sobre Teste Ouvintes.

Em que consistem os ouvintes TestNG?

Listener é definido como interface que modifica o padrão TestNGcomportamento do . Como o nome sugere, os Listeners “ouvem” o evento definido no script do Selenium e se comportam de acordo. Ele é usado no Selenium implementando a Listeners Interface. Ele permite personalizar TestNG relatórios ou registros. Existem muitos tipos de TestNG ouvintes disponíveis.

Ouvintes em TestNG

Tipos de ouvintes em TestNG

Existem muitos tipos de ouvintes que permitem alterar o TestNGcomportamento de.

Abaixo estão alguns TestNG ouvintes:

  1. IAnotaçãoTransformador,
  2. IAnnotationTransformer2 ,
  3. IConfigurável,
  4. IConfigurationListener ,
  5. IExecutionListener,
  6. IHookable,
  7. IInvokedMethodListener,
  8. IInvokedMethodListener2,
  9. IMethodInterceptor,
  10. IReporter,
  11. ISuiteListener,
  12. ITestListener.

A interface acima é chamada TestNG Ouvintes. Essas interfaces são usadas no selênio para gerar logs ou personalizar o TestNG relatórios.

Neste tutorial, implementaremos o ITestListener.

ITestListener possui os seguintes métodos

  • OnStart- O método OnStart é chamado quando qualquer teste é iniciado.
  • onTestSuccess- O método onTestSuccess é chamado no sucesso de qualquer teste.
  • onTestFailure- O método onTestFailure é chamado na falha de qualquer teste.
  • onTestSkipped- O método onTestSkipped é chamado ao ser ignorado em qualquer teste.
  • onTestFailedButWithinSuccessPercentage- O método é chamado sempre que o teste falha, mas está dentro da porcentagem de sucesso.
  • onFinish- O método onFinish é chamado após todos os testes serem executados.

Cenário de Teste

Neste cenário de teste, automatizaremos o processo de Login e implementaremos o 'ItestListener'.

  1. Lançar o Firefox e abra o site http://demo.guru99.com/V4/
  2. Cenário de Teste

  3. Faça login no aplicativo.
  4. Cenário de Teste

Passos para criar um TestNG Ouvinte

Para o cenário de teste acima, implementaremos o Listener.

Passo 1) Crie a classe “ListenerTest” que implementa ‘ITestListener’. Mova o mouse sobre o texto com linha vermelha e Eclipse irá sugerir 2 soluções rápidas, conforme mostrado na tela abaixo:

Etapas para criar um TestNG Ouvinte

Basta clicar em “Adicionar métodos não implementados”. Vários métodos não implementados (sem corpo) são adicionados ao código. Verifique abaixo-

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

Vamos modificar a classe ‘ListenerTest’. Em particular, modificaremos os seguintes métodos-

onTestFailure, onTestSkipped, onTestStart, onTestSuccess, etc.

A modificação é simples. Apenas imprimimos o nome do teste.

Os logs são criados no console. É fácil para o usuário entender qual teste é aprovado, reprovado e ignorado.

Após a modificação, o código se parece com-

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

}			

Passo 2) Crie outra classe “TestCases” para automação do processo de login. Selenium irá executar este 'TestCases' para fazer login automaticamente.

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

Passo 3) A seguir, implemente este ouvinte em nossa classe de projeto regular, ou seja, “TestCases”. Existem duas maneiras diferentes de se conectar à classe e à interface.

A primeira maneira é usar a anotação Listeners (@Listeners) conforme mostrado abaixo:

@Listeners(Listener_Demo.ListenerTest.class)

Usamos isso na classe “TestCases” conforme mostrado abaixo.

Então, finalmente, a classe “TestCases” fica assim depois de usar a anotação 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);			
}		
}			

A estrutura do projeto se parece com:

Etapas para criar um TestNG Ouvinte

Etapa 4): Execute a classe “TestCases”. Os métodos da classe “ListenerTest” são chamados automaticamente de acordo com o comportamento dos métodos anotados como @Test.

Etapa 5): Verifique a saída que os logs exibem no console.

A saída dos 'TestCases' ficará assim:

Etapas para criar um TestNG Ouvinte

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

Uso de Listener para múltiplas classes.

Se o projeto tiver várias classes, adicionar ouvintes a cada uma delas pode ser complicado e sujeito a erros.

Nesses casos, podemos criar um testng.xml e adicionar tags de ouvintes em XML.

Uso de Listener para Múltiplas Classes

Este ouvinte é implementado em todo o conjunto de testes, independentemente do número de classes que você possui. Ao executar este arquivo XML, os ouvintes funcionarão em todas as classes mencionadas. Você também pode declarar qualquer número de classes de ouvinte.

Resumo

Os ouvintes são obrigados a gerar logs ou personalizar TestNG relatórios em Selenium Driver da Web.

  • Existem muitos tipos de ouvintes e podem ser usados ​​de acordo com os requisitos.
  • Ouvintes são interfaces usadas no script do driver da web Selenium
  • Demonstrou o uso do Listener em Selenium
  • Implementou os Listeners para múltiplas classes