TestNG Слушатели в Selenium: Пример ITestListener и ITestResult
Есть два основных слушателя.
- Слушатели веб-драйвера
- TestNG Слушатели
В этом уроке мы обсудим TestNG Слушатели.
Что такое Слушатели TestNG?
Прослушиватель определяется как интерфейс, который изменяет стандартный TestNG's behavior. Как следует из названия, слушатели «слушают» событие, определенное в скрипте selenium, и ведут себя соответственно. Он используется в selenium путем реализации интерфейса слушателей. Он позволяет настраивать TestNG отчеты или журналы. Существует много типов TestNG доступные слушатели.
Типы слушателей в TestNG
Существует много типов прослушивателей, которые позволяют вам изменять TestNGповедение.
Ниже приведены несколько TestNG слушатели:
- IAnnotationTransformer,
- IAnnotationTransformer2 ,
- IКонфигурируемый,
- IConfigurationListener ,
- IExecutionListener,
- IHookable ,
- IInvokedMethodListener,
- IInvokedMethodListener2,
- IMethodInterceptor,
- репортер,
- ISuiteListener,
- ITestListener.
Вышеуказанный интерфейс называется TestNG Прослушиватели. Эти интерфейсы используются в Selenium для генерации журналов или настройки TestNG отчеты.
В этом уроке мы реализуем ITestListener.
ITestListener имеет следующие методы
- OnStart- Метод OnStart вызывается при запуске любого теста.
- onTestSuccess- Метод onTestSuccess вызывается при успешном завершении любого теста.
- onTestFailure- Метод onTestFailure вызывается при неудачном выполнении любого теста.
- onTestSkipped- Метод onTestSkipped вызывается при пропуске любого теста.
- onTestFailedButWithinSuccessPercentage- Метод вызывается каждый раз, когда тест завершается неудачей, но процент успеха находится в пределах.
- onFinish- Метод onFinish вызывается после выполнения всех тестов.
Сценарий тестирования
В этом тестовом сценарии мы автоматизируем процесс входа в систему и реализуем ItestListener.
- Запустить Firefox и откройте сайт https://demo.guru99.com/V4/
- Войдите в приложение.
Шаги по созданию TestNG слушатель
Для приведенного выше тестового сценария мы реализуем Listener.
Шаг 1) Создайте класс «ListenerTest», реализующий «ITestListener». Наведите указатель мыши на текст красной линии и Eclipse предложит вам два быстрых решения, как показано на экране ниже:
Просто нажмите «Добавить нереализованные методы». В код добавляется несколько нереализованных методов (без тела). Проверьте ниже-
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 выполнит эти «тестовые случаи» для автоматического входа в систему.
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); } }
Структура проекта выглядит так:
Шаг 4): Выполните класс «TestCases». Методы в классе «ListenerTest» вызываются автоматически в соответствии с поведением методов, помеченных как @Test.
Шаг 5): Проверьте вывод, который регистрируется, отображается на консоли.
Вывод «TestCases» будет выглядеть следующим образом:
[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 Вебдрайвер.
- Существует множество типов прослушивателей, и их можно использовать в соответствии с требованиями.
- Слушатели — это интерфейсы, используемые в скрипте веб-драйвера Selenium.
- Продемонстрировано использование Listener в Selenium
- Реализованы слушатели для нескольких классов.