Есть два основных слушателя.
- Слушатели WebDriver
- Слушатели TestNG
В этом уроке мы обсудим слушателей Testng . Вот что вы узнаете
- Что такое слушатели в TestNG?
- Типы слушателей в TestNG
- Тестовый сценарий:
- Шаги для создания прослушивателя TestNG
- Использование Listener для нескольких классов.
Что такое слушатели в TestNG?
Слушатель определяется как интерфейс, который изменяет поведение TestNG по умолчанию. Как следует из названия, слушатели «слушают» событие, определенное в сценарии селена, и ведут себя соответственно. Это используется в селене, реализуя Интерфейс Слушателей. Это позволяет настраивать отчеты и журналы TestNG. Есть много типов слушателей TestNG.
Типы слушателей в TestNG
Есть много типов слушателей, которые позволяют вам изменить поведение TestNG.
Ниже приведены несколько слушателей TestNG:
- InnotationTransformer,
- IAnnotationTransformer2,
- IConfigurable,
- IConfigurationListener,
- IExecutionListener,
- IHookable,
- IInvokedMethodListener,
- IInvokedMethodListener2,
- IMethodInterceptor,
- IReporter,
- ISuiteListener,
- ITestListener.
Выше интерфейс называется TestNG Listeners. Эти интерфейсы используются в Селене для создания журналов или настройки отчетов TestNG.
В этом руководстве мы будем реализовывать ITestListener.
ITestListener имеет следующие методы
- OnStart- OnStart метод вызывается при запуске любого теста.
- onTestSuccess — метод onTestSuccess вызывается при успешном выполнении любого теста.
- onTestFailure — метод onTestFailure вызывается при сбое любого теста.
- onTestSkipped — метод onTestSkipped вызывается при пропуске любого теста.
- onTestFailedButWithinSuccessPercentage — метод вызывается каждый раз, когда тест не пройден, но находится в пределах процента успеха.
- Метод onFinish — onFinish вызывается после выполнения всех тестов.
Тестовый сценарий:
В этом тестовом сценарии мы автоматизируем процесс входа в систему и реализуем ItestListener.
- Запустите Firefox и откройте сайт » http://demo.guru99.com/V4/»
- Войдите в приложение.
Шаги для создания прослушивателя TestNG
Для приведенного выше сценария тестирования мы будем реализовывать Listener.
Шаг 1) Создайте класс «ListenerTest», который реализует «ITestListener». Наведите курсор на красный текст, и Eclipse предложит вам 2 быстрых исправления, как показано на экране ниже:
Просто нажмите «Добавить невыполненные методы». В код добавлено несколько не реализованных методов (без тела). Проверьте ниже-
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); } }
Структура проекта выглядит так:
Шаг 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 для нескольких классов.
Если в проекте есть несколько классов, добавление Listeners к каждому из них может быть громоздким и подверженным ошибкам.
В таких случаях мы можем создать testng.xml и добавить тег listeners в XML.
Этот слушатель реализован во всем наборе тестов, независимо от количества классов, которые у вас есть. Когда вы запустите этот XML-файл, слушатели будут работать со всеми упомянутыми классами. Вы также можете объявить любое количество класса слушателя.
Резюме:
Слушатели должны создавать журналы или настраивать отчеты TestNG в Selenium Webdriver.
- Есть много типов слушателей и могут использоваться согласно требованиям.
- Слушатели — это интерфейсы, используемые в скрипте селена.
- Продемонстрировал использование Listener в Selenium
- Реализовал Слушатели для нескольких классов