Прослушиватели TestNG в Selenium: пример ITestListener и ITestResult


Есть два основных слушателя.

  1. Слушатели веб-драйвера
  2. Слушатели TestNG

В этом уроке мы обсудим TestNG Слушатели.

Что такое слушатели в TestNG?

Прослушиватель определяется как интерфейс, который изменяет поведение TestNG по умолчанию. Как следует из названия, прослушиватели «слушают» событие, определенное в сценарии Selenium, и ведут себя соответствующим образом. Он используется в селене путем реализации интерфейса прослушивателей. Это позволяет настраивать отчеты или журналы TestNG. Доступно множество типов прослушивателей TestNG.

Слушатели в TestNG

Типы слушателей в TestNG

Существует множество типов прослушивателей, которые позволяют вам изменять поведение TestNG.

Ниже приведены несколько слушателей TestNG:

  1. IAnnotationTransformer,
  2. IAnnotationTransformer2 ,
  3. IКонфигурируемый,
  4. IConfigurationListener ,
  5. IExecutionListener,
  6. IHookable ,
  7. IInvokedMethodListener,
  8. IInvokedMethodListener2,
  9. IMethodInterceptor,
  10. репортер,
  11. ISuiteListener,
  12. ITestListener.

Вышеуказанный интерфейс называется прослушивателями TestNG. Эти интерфейсы используются в Selenium для создания журналов или настройки отчетов TestNG.

В этом уроке мы реализуем ITestListener.

ITestListener имеет следующееwing методы

  • OnStart- Метод OnStart вызывается при запуске любого теста.
  • onTestSuccess- Метод onTestSuccess вызывается при успешном завершении любого теста.
  • onTestFailure- Метод onTestFailure вызывается при неудачном выполнении любого теста.
  • onTestSkipped- Метод onTestSkipped вызывается при пропуске любого теста.
  • onTestFailedButWithinSuccessPercentage- Метод вызывается каждый раз, когда тест завершается неудачей, но процент успеха находится в пределах.
  • onFinish- Метод onFinish вызывается после выполнения всех тестов.

Сценарий тестирования

В этом тестовом сценарии мы автоматизируем процесс входа в систему и реализуем ItestListener.

  1. Запустить Firefox и откройте сайт http://demo.guru99.com/V4/
  2. Сценарий тестирования

  3. Войдите в приложение.
  4. Сценарий тестирования

Шаги по созданию прослушивателя TestNG

Для приведенного выше тестового сценария мы реализуем Listener.

Шаг 1) Создайте класс «ListenerTest», реализующий «ITestListener». Наведите указатель мыши на текст красной линии и Eclipse предложит вам два быстрых решения, как показано на экране ниже:

Шаги по созданию прослушивателя TestNG

Просто нажмите «Добавить нереализованные методы». В код добавляется несколько нереализованных методов (без тела). Проверьте ниже-

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

Давайте изменим класс ListenerTest. В частности, мы изменим следующееwing методы-

onTestFailure, onTestSkipped, onTestStart, onTestSuccess, etc.

Модификация проста. Мы просто печатаем название теста.

Журналы создаются в консоли. Пользователю легко понять, какой тест имеет статус пройден, не пройден или пропущен.

После модификации код выглядит так:

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

}			

Шаг 2) Создайте еще один класс «TestCases» для автоматизации процесса входа в систему. Selenium выполнит этот «TestCases» для автоматического входа в систему.

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

Шаг 3) Затем реализуйте этот прослушиватель в нашем обычном классе проекта, то есть «TestCases». Существует два разных способа подключения к классу и интерфейсу.

Первый способ — использовать аннотацию Listeners (@Listeners), как показано ниже:

@Listeners(Listener_Demo.ListenerTest.class)

Мы используем это в классе «TestCases», как показано ниже.

Итак, наконец, класс TestCases выглядит так после использования аннотации 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);			
}		
}			

Структура проекта выглядит так:

Шаги по созданию прослушивателя TestNG

Шаг 4): Выполните класс «TestCases». Методы в классе «ListenerTest» вызываются автоматически в соответствии с поведением методов, помеченных как @Test.

Шаг 5): Проверьте вывод, который регистрируется, отображается на консоли.

Вывод «TestCases» будет выглядеть следующим образом:

Шаги по созданию прослушивателя 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]

Использование Listener для нескольких классов.

Если в проекте есть несколько классов, добавление прослушивателей к каждому из них может быть громоздким и подверженным ошибкам.

В таких случаях мы можем создать testng.xml и добавить тег прослушивателей в XML.

Использование прослушивателя для нескольких классов

Этот прослушиватель реализуется во всем наборе тестов независимо от количества имеющихся у вас классов. Когда вы запустите этот XML-файл, прослушиватели будут работать со всеми упомянутыми классами. Вы также можете объявить любое количество классов слушателей.

Итоги

Слушатели необходимы для создания журналов или настройки отчетов TestNG в Selenium Webdriver.

  • Существует множество типов прослушивателей, и их можно использовать в соответствии с требованиями.
  • Слушатели — это интерфейсы, используемые в скрипте веб-драйвера Selenium.
  • Продемонстрировано использование Listener в Selenium.
  • Реализованы слушатели для нескольких классов.