Учебники

28) Слушатели TestNG

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

  1. Слушатели WebDriver
  2. Слушатели TestNG

В этом уроке мы обсудим слушателей Testng . Вот что вы узнаете

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

Слушатель определяется как интерфейс, который изменяет поведение TestNG по умолчанию. Как следует из названия, слушатели «слушают» событие, определенное в сценарии селена, и ведут себя соответственно. Это используется в селене, реализуя Интерфейс Слушателей. Это позволяет настраивать отчеты и журналы TestNG. Есть много типов слушателей TestNG.

Слушатели TestNG в Selenium WebDriver

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

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

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

  1. InnotationTransformer,
  2. IAnnotationTransformer2,
  3. IConfigurable,
  4. IConfigurationListener,
  5. IExecutionListener,
  6. IHookable,
  7. IInvokedMethodListener,
  8. IInvokedMethodListener2,
  9. IMethodInterceptor,
  10. IReporter,
  11. ISuiteListener,
  12. ITestListener.

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

В этом руководстве мы будем реализовывать ITestListener.

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

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

Тестовый сценарий:

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

  1. Запустите Firefox и откройте сайт » http://demo.guru99.com/V4/»

Слушатели TestNG в Selenium WebDriver

  1. Войдите в приложение.

Слушатели TestNG в Selenium WebDriver

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

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

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

Слушатели TestNG в Selenium WebDriver

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

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». В частности, мы изменим следующие методы:

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 в Selenium WebDriver

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

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

Вывод ‘TestCases’ будет выглядеть так:

Слушатели TestNG в Selenium WebDriver

[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 для нескольких классов.

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

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

Слушатели TestNG в Selenium WebDriver

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

Резюме:

Слушатели должны создавать журналы или настраивать отчеты TestNG в Selenium Webdriver.

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