Ouvintes TestNG em Selenium: exemplo ITestListener e ITestResult


Existem dois ouvintes principais.

  1. Ouvintes do WebDriver
  2. Ouvintes TestNG

Neste tutorial, discutiremos sobre Teste Ouvintes.

O que são ouvintes no TestNG?

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

Ouvintes em TestNG

Tipos de ouvintes no TestNG

Existem muitos tipos de ouvintes que permitem alterar o comportamento do TestNG.

Abaixo estão alguns ouvintes do TestNG:

  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 de ouvintes TestNG. Essas interfaces são usadas no Selenium para gerar logs ou personalizar os relatórios TestNG.

Neste tutorial, implementaremos o ITestListener.

ITestListener seguiuwing 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

Etapas para criar um ouvinte TestNG

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 ouvinte TestNG

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 o seguintewing 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. O Selenium 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 ouvinte TestNG

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 ouvinte TestNG

[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 relatórios TestNG no Selenium Webdriver.

  • 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 no Selenium
  • Implementou os Listeners para múltiplas classes