Есть два основных слушателя.
- Слушатели WebDriver
- Слушатели TestNG
В этом руководстве мы обсудим Testng Listeners. Вот что вы узнаете -
- Что такое слушатели в TestNG?
- Типы слушателей в TestNG
- Сценарий тестирования:
- Шаги по созданию слушателя TestNG
- Использование Listener для нескольких классов.
Что такое слушатели в TestNG?
Слушатель определяется как интерфейс, который изменяет поведение TestNG по умолчанию. Как следует из названия, слушатели «слушают» событие, определенное в сценарии селена, и ведут себя соответствующим образом. Он используется в селене путем реализации интерфейса слушателей. Он позволяет настраивать отчеты или журналы TestNG. Доступно множество типов слушателей TestNG.
Типы слушателей в TestNG
Есть много типов слушателей, которые позволяют вам изменять поведение TestNG.
Ниже приведены несколько слушателей TestNG:
- IAnnotationTransformer,
- IAnnotationTransformer2,
- IConfigurable,
- IConfigurationListener,
- IExecutionListener,
- IHookable,
- IInvokedMethodListener,
- IInvokedMethodListener2,
- IMethodInterceptor,
- IReporter,
- ISuiteListener,
- ITestListener.
Вышеупомянутый интерфейс называется слушателями TestNG. Эти интерфейсы используются в селене для создания журналов или настройки отчетов 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 быстрых исправления, как показано на экране ниже:
Просто нажмите «Добавить нереализованные методы». В код добавлено несколько нереализованных методов (без тела). Проверьте ниже-
пакет Listener_Demo;import org.testng.ITestContext;import org.testng.ITestListener;import org.testng.ITestResult;открытый класс ListenerTest реализует ITestListener{@Overridepublic void onFinish (ITestContext arg0) {// TODO Заглушка автоматически сгенерированного метода}@Overridepublic void onStart (ITestContext arg0) {// TODO Заглушка автоматически сгенерированного метода}@Overridepublic void onTestFailedButWithinSuccessPercentage (ITestResult arg0) {// TODO Заглушка автоматически сгенерированного метода}@Overridepublic void onTestFailure (ITestResult arg0) {// TODO Заглушка автоматически сгенерированного метода}@Overridepublic void onTestSkipped (ITestResult arg0) {// TODO Заглушка автоматически сгенерированного метода}@Overridepublic void onTestStart (ITestResult arg0) {// TODO Заглушка автоматически сгенерированного метода}@Overridepublic void onTestSuccess (ITestResult arg0) {// TODO Заглушка автоматически сгенерированного метода}}
Давайте изменим класс ListenerTest. В частности, мы изменим следующие методы:
onTestFailure, onTestSkipped, onTestStart, onTestSuccess и т. д.
Модификация проста. Мы просто печатаем название Test.
Журналы создаются в консоли. Пользователю легко понять, какой тест имеет статус «пройден», «не прошел» или «пропущен».
После модификации код выглядит так:
пакет Listener_Demo;import org.testng.ITestContext;import org.testng.ITestListener;import org.testng.ITestResult;открытый класс ListenerTest реализует ITestListener{@Overridepublic void onFinish (результат ITestContext){}@Overridepublic void onStart (результат ITestContext){}@Overridepublic void onTestFailedButWithinSuccessPercentage (результат ITestResult){}// Когда тестовый пример не удался, вызывается этот метод.@Overridepublic void onTestFailure (результат ITestResult){System.out.println («Имя неудачного теста:» + Result.getName ());}// Когда тестовый пример пропущен, вызывается этот метод.@Overridepublic void onTestSkipped (результат ITestResult){System.out.println ("Имя пропущенного тестового примера: + Result.getName ());}// При запуске тестового примера вызывается этот метод.@Overridepublic void onTestStart (результат ITestResult){System.out.println (Result.getName () + «тестовый пример запущен»);}// Когда тестовый пример пройден, вызывается этот метод.@Overridepublic void onTestSuccess (результат ITestResult){System.out.println ("Имя пройденного теста: + Result.getName ());}}
Шаг 2) Создайте еще один класс TestCases для автоматизации процесса входа в систему. Selenium выполнит эти «TestCases» для автоматического входа в систему.
пакет 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;Импортировать org.testng.annotations.Test;public class TestCases {Драйвер WebDriver = новый FirefoxDriver ();// Тест для прохождения, как для проверки слушателей.@Тестpublic void Login (){driver.get ("http://demo.guru99.com/V4/");driver.findElement (By.name ("uid")). sendKeys ("mngr34926");driver.findElement (By.name ("пароль")). sendKeys ("amUpenu");driver.findElement (By.name ("btnLogin")). click ();}// Принудительно провалил этот тест для проверки слушателя.@Тестpublic void TestToFail (){System.out.println («Этот метод проверки завершился неудачно»);Assert.assertTrue (ложь);}}
Шаг 3) Затем реализуйте этот слушатель в нашем обычном классе проекта, то есть «TestCases». Есть два разных способа подключения к классу и интерфейсу.
Первый способ - использовать аннотацию Listeners (@Listeners), как показано ниже:
@ Слушатели (Listener_Demo.ListenerTest.class)
Мы используем это в классе TestCases, как показано ниже.
Итак, наконец, класс "TestCases" выглядит так, как после использования аннотации Listener:
пакет 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;@ Слушатели (Listener_Demo.ListenerTest.class)public class TestCases {Драйвер WebDriver = новый FirefoxDriver ();// Тест для прохождения, как для проверки слушателей.@Тестpublic void Login (){driver.get ("http://demo.guru99.com/V4/");driver.findElement (By.name ("uid")). sendKeys ("mngr34926");driver.findElement (By.name ("пароль")). sendKeys ("amUpenu");driver.findElement (By.id ("")). click ();}// Принудительно провалил этот тест как слушатель проверки.@Тестpublic void TestToFail (){System.out.println («Этот метод проверки завершился неудачно»);Assert.assertTrue (ложь);}}
Структура проекта выглядит так:
Шаг 4): Выполните класс «TestCases». Методы класса ListenerTest вызываются автоматически в соответствии с поведением методов, помеченных как @Test.
Шаг 5): Убедитесь, что вывод журналов отображается на консоли.
Вывод TestCases будет выглядеть так:
[TestNG] Выполняется:C: \ Users \ gauravn \ AppData \ Local \ Temp \ testng-eclipse - 1058076918 \ testng-customsuite.xmlТестовый пример входа запущенНазвание пройденного теста: ВойтиТестовый пример TestToFail запущенЭтот метод проверки не пройденИмя неуспешного теста: TestToFail.ВЫПОЛНЕНО: ВойтиНЕ ВЫПОЛНЕНО: TestToFailjava.lang.AssertionError: ожидалось [true], но найдено [false]
Использование Listener для нескольких классов.
Если в проекте есть несколько классов, добавление слушателей к каждому из них может быть громоздким и подверженным ошибкам.
В таких случаях мы можем создать testng.xml и добавить тег слушателей в XML.
Этот слушатель реализован во всем наборе тестов, независимо от количества имеющихся у вас классов. Когда вы запустите этот XML-файл, слушатели будут работать со всеми упомянутыми классами. Вы также можете объявить любое количество классов слушателей.
Резюме:
Слушатели необходимы для создания журналов или настройки отчетов TestNG в Selenium Webdriver.
- Есть много типов слушателей, и их можно использовать в соответствии с требованиями.
- Слушатели - это интерфейсы, используемые в скрипте веб-драйвера selenium.
- Продемонстрировано использование Listener в Selenium.
- Реализованы слушатели для нескольких классов.