Введение в слушателей в TestNG

Прежде чем понимать слушателей в TestNG, мы сначала изучим слушателей и TestNG по отдельности. Есть моменты, когда мы хотим изменить поведение TestNG в нашем приложении, и это может быть сделано интерфейсами. Эти интерфейсы, которые помогают пользователю сделать это, известны как Слушатели. Как следует из названия, основной задачей «Слушателей» является прослушивание определенного события и реагирование в соответствии с этим. Основная цель, для которой слушатели используются программистами, заключается в создании журналов и создании пользовательских отчетов в соответствии с определенным сценарием.

В TestNG есть разные типы слушателей, и каждый слушатель выполняет свою задачу. Некоторые из них упомянуты ниже:

  1. IConfigurable
  2. IAnnotationTransformer
  3. IHookable
  4. IReporter
  5. ISuiteListener

Методы слушателей в TestNG

Хотя в TestNG доступно много слушателей, и у каждого слушателя есть определенные методы, которые переопределяются. Давайте обсудим 2 самых популярных слушателя и методы, которые они отменяют:

1. ITestListener

ITestListener - один из наиболее часто используемых слушателей в Selenium Webdriver. Программист просто должен реализовать интерфейс ITestListener и переопределить все методы этого интерфейса, чтобы использовать его. Он делает вызов до и после каждого теста, присутствующего в комплекте. В нем есть несколько методов, которые упомянуты ниже:

  • onStart: это первый и главный метод, который вызывается после создания экземпляра класса теста. Его также можно использовать для получения каталога, из которого выполняется тест.
  • onFinish: это последний метод, вызываемый после выполнения всех переопределенных методов.
  • onTestStart (результат ITestResult): этот метод вызывается каждый раз перед любым новым методом тестирования. Это указывает на то, что требуемый метод тестирования запущен.
  • onTestFailure (результат ITestResult): этот метод вызывается, когда какой-либо метод теста не выполняется, поскольку он указывает на ошибки теста. Мы можем выполнять определенные задачи при неудачном тестировании, например, делать снимок экрана при сбое конкретного теста, чтобы получить более глубокое представление о сбое.
  • onTestSkipped (результат ITestResult): этот метод вызывается, когда любой тестовый метод пропускается для выполнения.
  • onTestSuccess (результат ITestResult): этот метод вызывается при успешном выполнении определенного метода тестирования. Программист может выполнить любую желаемую операцию при успешном выполнении тестового метода, написав код внутри этого метода.
  • onTestFailedButWithinSuccessPercentage (результат ITestResult): этот метод вызывается, когда какой-либо метод тестирования завершается с некоторым процентом успеха. Например, он представляет собой случай, если какой-либо метод тестирования выполняется 10 раз и не проходит 5 раз. Он принимает 2 параметра, то есть successPercentage и invocationCount. В приведенном выше случае successPercentage будет равно 50, а invocationCount будет равно 10.

2. ISuiteListener

В отличие от ITestListener, который реализуется после каждого метода тестирования, ISuiteListener реализуется на уровне Suite. У него есть два метода, которые переопределяются:

  • onStart: этот метод реализован до вызова набора тестов, что означает, что весь код, написанный внутри него, запускается до запуска любого набора.
  • onFinish: этот метод реализуется после вызова набора тестов, что означает, что весь код, написанный внутри него, запускается после запуска всего набора тестов.

Как создать слушателей в TestNG?

Есть два основных способа создания Слушателей в TestNG:

1. Мы можем использовать интерфейс @Listeners внутри класса.

Шаг 1: Первый и главный шаг - создать класс для Listener, который реализует ITestListener и переопределяет все его методы, описанные выше.

Класс: TestListener.java

Код:

package Demo;
import org.testng.ITestContext;
import org.testng.ITestListener;
import org.testng.ITestResult;
public class TestListener implements ITestListener
(
@Override
public void onTestStart(ITestResult res)
(
System.out.println("Started test case is "+ res.getName());
)
@Override
public void onStart(ITestContext res)
(
)
@Override
public void onFinish(ITestContext res)
(
)
// Run when the test case passed successfully
@Override
public void onTestSuccess(ITestResult res)
(
System.out.println("Test case passed is "+res.getName());
)
// Run when the test case fails
@Override
public void onTestFailure(ITestResult res)
(
System.out.println("Test case failed is "+res.getName());
)
// Run when test case pass with some failures
@Override
public void onTestFailedButWithinSuccessPercentage(ITestResult res)
(
System.out.println("Test case passed with failure is "+res.getName());
)
// Run when the test case is skipped
@Override
public void onTestSkipped(ITestResult res)
(
System.out.println("Test case skipped is :"+res.getName());
)
)

Шаг 2: Далее нам нужно реализовать вышеупомянутый Listener в обычной Java-программе входа в систему в приложении, имеющем методы @test с использованием аннотации @Listeners.

Класс: Testing.java

Код:

package 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(Demo.TestListener.class)
public class Testing
(
String driverPath =
"C:\\Users\\username\\Downloads\\Compressed\\geckodriver.exe";
public WebDriver driver;
@BeforeMethod
public void startBrowser() (
System.setProperty("webdriver.gecko.driver", driverPath);
DesiredCapabilities capabilities = DesiredCapabilities.firefox();
capabilities.setCapability("marionette", true);
driver= new FirefoxDriver();
)
// Test case to login an application which will pass .
@Test
public void LoginMethod()
(
driver.get("http://testing-ground.scraping.pro/login"); driver.findElement(By.id("usr")).sendKeys("admin");
driver.findElement(By.id("pwd")).sendKeys("123");
driver.findElement(By.xpath("//*(@id=\"case_login\")/form/input(3)")).
click();
)
// Test case for failure in order to check the working of listener.
@Test
public void FailMethod()
(
System.out.println("Forcefully making the method to fail");
Assert.assertTrue(false);
)
)

Шаг 3: Теперь мы можем добавить запись о классе в XML-файл, как показано ниже:

Код:





Выход:

2. Мы можем использовать add Listeners в XML-файле напрямую.

Хотя описанный выше подход добавления @listeners в конкретную работу класса в наборе, имеющем так много классов, не является хорошим подходом для добавления слушателя в каждый класс. Вместо этого мы можем создать запись Listeners и классов в файле XML.

Шаг 1: Создание класса Listener в Java, реализующего ITestListener, и переопределение его методов, аналогичных упомянутым выше.

Класс: TestListener.java

Код:

package Demo;
import org.testng.ITestContext;
import org.testng.ITestListener;
import org.testng.ITestResult;
public class TestListener implements ITestListener
(
@Override
public void onTestStart(ITestResult res)
(
System.out.println("Started test case is "+ res.getName());
)
@Override
public void onStart(ITestContext res)
(
)
@Override
public void onFinish(ITestContext res)
(
)
// Run when the test case passed successfully
@Override
public void onTestSuccess(ITestResult res)
(
System.out.println("Test case passed is "+res.getName());
)
// Run when the test case fails
@Override
public void onTestFailure(ITestResult res)
(
System.out.println("Test case failed is "+res.getName());
)
// Run when test case pass with some failures
@Override
public void onTestFailedButWithinSuccessPercentage(ITestResult res)
(
System.out.println("Test case passed with failure is "+res.getName());
)
// Run when the test case is skipped
@Override
public void onTestSkipped(ITestResult res)
(
System.out.println("Test case skipped is :"+res.getName());
)
)

Шаг 2: Затем нам нужно создать обычную Java-программу для входа в приложение, содержащее все методы @test, и нет необходимости использовать аннотацию @Listeners.

Класс: Testing.java

Код:

package 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 Testing
(
String driverPath = "C:\\Users\\username\\Downloads\\Compressed\\geckodriver.exe";
public WebDriver driver;
@BeforeMethod
public void startBrowser() (
System.setProperty("webdriver.gecko.driver", driverPath);
DesiredCapabilities capabilities = DesiredCapabilities.firefox();
capabilities.setCapability("marionette", true);
driver= new FirefoxDriver();
)
// Test case to login an application which will pass.
@Test
public void LoginMethod()
(
driver.get("http://testing-ground.scraping.pro/login"); driver.findElement(By.id("usr")).sendKeys("admin");
driver.findElement(By.id("pwd")).sendKeys("123");
driver.findElement(By.xpath("//*(@id=\"case_login\")/form/input(3)")).
click();
)
// Test case for failure in order to check the working of listener.
@Test
public void FailMethod()
(
System.out.println("Forcefully making the method to fail");
Assert.assertTrue(false);
)
)

Шаг 3: Теперь мы можем добавить запись слушателя и класса в XML-файл, как показано ниже:

Код:







Выход:

Вывод

Выше описание Слушателей ясно дает базовое понимание Слушателей и того, как они реализованы в программе Java для настройки журналов и отчетов. Перед использованием любого Слушателя необходимо четкое понимание всех Слушателей и конкретных сценариев, в которых они должны использоваться вместе с методами, которые они переопределяют.

Рекомендуемые статьи

Это руководство для слушателей в TestNG. Здесь мы обсудим методы Слушателей в TestNG и два способа создания Слушателей в TestNG. Вы также можете просмотреть другие наши статьи, чтобы узнать больше-

  1. Установить TestNG
  2. AngularJS События
  3. Что такое XPath?
  4. Тестирование фреймворков для Java
  5. Java аннотации
  6. Переопределение в Java