TestNG Слухачі в Selenium: приклад ITestListener & ITestResult
Є два основних слухача.
- Слухачі WebDriver
- TestNG Слухачі
У цьому підручнику ми обговоримо Testng Слухачі.
Що таке Слухачі в TestNG?
Слухач визначається як інтерфейс, який змінює значення за замовчуванням TestNGповедінка. Як випливає з назви, слухачі «слухають» подію, визначену в сценарії selenium, і поводяться відповідно. Він використовується в Selenium шляхом реалізації інтерфейсу слухачів. Це дозволяє налаштувати TestNG звіти або журнали. Є багато типів TestNG доступні слухачі.
Типи слухачів в TestNG
Існує багато типів слухачів, які дозволяють змінювати TestNGповедінка.
Нижче наведено декілька TestNG слухачі:
- IAnnotationTransformer ,
- IAnnotationTransformer2 ,
- IConfigurable ,
- IConfigurationListener ,
- IExecutionListener,
- Ihookable ,
- IInvokedMethodListener ,
- IInvokedMethodListener2 ,
- IMethodInterceptor,
- IReporter,
- 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/
- Увійти в додаток.
Кроки для створення a 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("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
- Реалізовано слухачі для кількох класів