TestNG Слухачі в Selenium: приклад ITestListener & ITestResult


Є два основних слухача.

  1. Слухачі WebDriver
  2. TestNG Слухачі

У цьому підручнику ми обговоримо Testng Слухачі.

Що таке Слухачі в TestNG?

Слухач визначається як інтерфейс, який змінює значення за замовчуванням TestNGповедінка. Як випливає з назви, слухачі «слухають» подію, визначену в сценарії selenium, і поводяться відповідно. Він використовується в Selenium шляхом реалізації інтерфейсу слухачів. Це дозволяє налаштувати TestNG звіти або журнали. Є багато типів TestNG доступні слухачі.

Слухачі в TestNG

Типи слухачів в TestNG

Існує багато типів слухачів, які дозволяють змінювати TestNGповедінка.

Нижче наведено декілька TestNG слухачі:

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

Наведені вище інтерфейси називаються TestNG Слухачі. Ці інтерфейси використовуються в Selenium для створення журналів або налаштування TestNG звіти.

У цьому підручнику ми реалізуємо ITestListener.

ITestListener має такі методи

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

Сценарій тесту

У цьому тестовому сценарії ми автоматизуємо процес входу та запровадимо «ItestListener».

  1. Запустити Firefox і відкрити сайт https://demo.guru99.com/V4/
  2. Сценарій тесту

  3. Увійти в додаток.
  4. Сценарій тесту

Кроки для створення a TestNG слухач

Для наведеного вище тестового сценарію ми запровадимо Listener.

Крок 1) Створіть клас «ListenerTest», який реалізує «ITestListener». Наведіть вказівник миші на червоний текст і Eclipse запропонує вам 2 швидких виправлення, як показано на екрані нижче:

Кроки для створення a 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. Зокрема, ми змінимо такі методи-

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("https://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("https://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 TestNG слухач

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

Крок 5): Перевірте вихідні дані, які реєструються на консолі.

Вихідні дані «TestCases» виглядатимуть так:

Кроки для створення a 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.

Використання Listener для кількох класів

Цей слухач реалізований у всьому наборі тестів, незалежно від кількості класів, які ви маєте. Коли ви запускаєте цей файл XML, слухачі працюватимуть з усіма згаданими класами. Ви також можете оголосити будь-яку кількість класів слухачів.

Підсумки

Слухачі повинні створювати журнали або налаштовувати TestNG повідомляє в Selenium Веб-драйвер.

  • Існує багато типів слухачів, і їх можна використовувати відповідно до вимог.
  • Слухачі — це інтерфейси, які використовуються в сценарії веб-драйвера selenium
  • Продемонстрував використання Listener в Selenium
  • Реалізовано слухачі для кількох класів