Existem dois ouvintes principais.
- Ouvintes WebDriver
- Ouvintes TestNG
Neste tutorial, discutiremos sobre Ouvintes de teste. Aqui está o que você aprenderá-
- O que são ouvintes no TestNG?
- Tipos de ouvintes em TestNG
- Cenário de teste:
- Etapas para criar um ouvinte TestNG
- Uso de Listener para várias classes.
O que são ouvintes no TestNG?
Listener é definido como uma interface que modifica o comportamento padrão do TestNG. Como o nome sugere, os Ouvintes "ouvem" o evento definido no script de selênio e se comportam de acordo. Ele é usado no selênio implementando a Interface de Ouvintes. Ele permite personalizar relatórios ou logs do TestNG. Existem muitos tipos de ouvintes TestNG disponíveis.
Tipos de ouvintes em TestNG
Existem muitos tipos de ouvintes que permitem alterar o comportamento do TestNG.
Abaixo estão alguns ouvintes do TestNG:
- IAnnotationTransformer,
- IAnnotationTransformer2,
- IConfigurable,
- IConfigurationListener,
- IExecutionListener,
- IHookable,
- IInvokedMethodListener,
- IInvokedMethodListener2,
- IMethodInterceptor,
- IReporter,
- ISuiteListener,
- ITestListener.
A interface acima é chamada de ouvintes TestNG. Essas interfaces são usadas no selênio para gerar logs ou personalizar os relatórios TestNG.
Neste tutorial, implementaremos o ITestListener.
ITestListener tem os seguintes métodos
- OnStart- método OnStart é chamado quando qualquer teste começa.
- O método onTestSuccess- onTestSuccess é chamado no sucesso de qualquer Teste.
- O método onTestFailure- onTestFailure é chamado na falha de qualquer teste.
- O método onTestSkipped- onTestSkipped é chamado em ignorado de qualquer teste.
- onTestFailedButWithinSuccessPercentage- método é chamado cada vez que o teste falha, mas está dentro da porcentagem de sucesso.
- O método onFinish- onFinish é chamado depois que todos os testes são executados.
Cenário de teste:
Neste cenário de teste, iremos automatizar o processo de Login e implementar o 'ItestListener'.
- Inicie o Firefox e abra o site "http://demo.guru99.com/V4/"
- Faça login no aplicativo.
Etapas para criar um ouvinte TestNG
Para o cenário de teste acima, implementaremos Listener.
Etapa 1) Crie a classe "ListenerTest" que implementa 'ITestListener'. Mova o mouse sobre o texto da linha vermelha e o Eclipse irá sugerir duas correções rápidas, conforme mostrado na tela abaixo:
Basta clicar em "Adicionar métodos não implementados". Vários métodos não implementados (sem um 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 implementa ITestListener{@Sobreporpublic void onFinish (ITestContext arg0) {// TODO stub do método gerado automaticamente}@Sobreporpublic void onStart (ITestContext arg0) {// TODO stub do método gerado automaticamente}@Sobreporpublic void onTestFailedButWithinSuccessPercentage (ITestResult arg0) {// TODO stub do método gerado automaticamente}@Sobreporpublic void onTestFailure (ITestResult arg0) {// TODO stub do método gerado automaticamente}@Sobreporpublic void onTestSkipped (ITestResult arg0) {// TODO stub do método gerado automaticamente}@Sobreporpublic void onTestStart (ITestResult arg0) {// TODO stub do método gerado automaticamente}@Sobreporpublic void onTestSuccess (ITestResult arg0) {// TODO stub do método gerado automaticamente}}
Vamos modificar a classe 'ListenerTest'. Em particular, iremos modificar 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 implementa ITestListener{@Sobreporpublic void onFinish (ITestContext Result){}@Sobreporpublic void onStart (ITestContext Result){}@Sobreporpublic void onTestFailedButWithinSuccessPercentage (ITestResult Result){}// Quando o caso de teste falha, este método é chamado.@Sobreporpublic void onTestFailure (ITestResult Result){System.out.println ("O nome do caso de teste falhou é: + Result.getName ());}// Quando o caso de teste é ignorado, este método é chamado.@Sobreporpublic void onTestSkipped (ITestResult Result){System.out.println ("O nome do caso de teste ignorado é: + Result.getName ());}// Quando o caso de teste é iniciado, este método é chamado.@Sobreporpublic void onTestStart (ITestResult Result){System.out.println (Result.getName () + "caso de teste iniciado");}// Quando o caso de teste é aprovado, este método é chamado.@Sobreporpublic void onTestSuccess (ITestResult Result){System.out.println ("O nome do caso de teste passado é: + Result.getName ());}}
Passo 2) Crie outra classe "TestCases" para a automação do processo de login. O Selenium executará estes 'TestCases' para fazer o 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 {Driver WebDriver = novo FirefoxDriver ();// Teste para passar para verificar os ouvintes.@Testepublic void Login (){driver.get ("http://demo.guru99.com/V4/");driver.findElement (By.name ("uid")). sendKeys ("mngr34926");driver.findElement (By.name ("senha")). sendKeys ("amUpenu");driver.findElement (By.name ("btnLogin")). click ();}// Falha à força neste teste para verificar o ouvinte.@Testepublic void TestToFail (){System.out.println ("Este método de teste falha");Assert.assertTrue (false);}}
Etapa 3) Em seguida, 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 após 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 {Driver WebDriver = novo FirefoxDriver ();// Teste para passar para verificar os ouvintes.@Testepublic void Login (){driver.get ("http://demo.guru99.com/V4/");driver.findElement (By.name ("uid")). sendKeys ("mngr34926");driver.findElement (By.name ("senha")). sendKeys ("amUpenu");driver.findElement (By.id ("")). click ();}// Falha forçosamente neste teste como ouvinte de verificação.@Testepublic void TestToFail (){System.out.println ("Este método de teste falha");Assert.assertTrue (false);}}
A estrutura do projeto é semelhante a:
Passo 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 registros são exibidos no console.
A saída dos 'TestCases' ficará assim:
[TestNG] Em execução:C: \ Users \ gauravn \ AppData \ Local \ Temp \ testng-eclipse - 1058076918 \ testng-customuite.xmlCaso de teste de login iniciadoO nome do caso de teste aprovado é: LoginCaso de teste TestToFail iniciadoEste método para testar falhaO nome do caso de teste com falha é: TestToFailPASSADO: LoginFALHA: TestToFailjava.lang.AssertionError: esperado [verdadeiro] mas encontrado [falso]
Uso de Listener para várias 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 a tag de ouvintes em XML.
Esse ouvinte é implementado em todo o conjunto de testes, independentemente do número de classes que você possui. Ao executar este arquivo XML, os ouvintes trabalharão em todas as classes mencionadas. Você também pode declarar qualquer número de classes de ouvinte.
Resumo:
Os ouvintes são necessários para gerar logs ou personalizar relatórios TestNG no Selenium Webdriver.
- Existem muitos tipos de ouvintes e podem ser usados conforme os requisitos.
- Ouvintes são interfaces usadas no script de driver da web selenium
- Demonstrou o uso de Listener em Selenium
- Implementou os ouvintes para várias classes