Знайомство з слухачами в TestNG

Перш ніж розібратися у слухачах у TestNG спочатку, ми вивчимо Слухачів та TestNG окремо. Бувають випадки, коли ми хочемо змінити поведінку TestNG у нашому додатку, і це можна зробити за допомогою інтерфейсів. Ці інтерфейси, які допомагають користувачеві зробити це, відомі як слухачі. Як випливає з назви, першочерговим завданням слухачів є прослуховування визначеної події та реагування відповідно до цього. Основна мета, яку слухачі використовують програмісти, - це створення журналів та створення користувацьких звітів відповідно до визначеного сценарію.

У TestNG є різні типи слухачів, і кожен слухач виконує свою мету. Деякі з них згадуються нижче:

  1. Неможливо налаштувати
  2. IAnnotationTransformer
  3. IHookable
  4. ІРепортер
  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. Для вищевказаного випадку, розмір успіху буде 50, а кількість викликів - 10.

2. ISuiteListener

На відміну від ITestListener, який реалізується після кожного методу тестування, ISuiteListener реалізований на рівні Suite. Він має два способи, які перекрито:

  • onStart: Цей метод реалізований до виклику тестового набору, що означає, що весь код, записаний всередині нього, запускається перед початком будь-якого пакету.
  • onFinish: Цей метод реалізується після виклику тестового набору, що означає, що весь код, записаний всередині нього, запускається після запуску всього тестового набору.

Як створити слухачів у TestNG?

В основному є два способи створення слухачів у TestNG:

1. Ми можемо використовувати інтерфейс @Listeners всередині класу.

Крок 1: Першим і головним кроком є ​​створення класу для слухача, який реалізує 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.

Клас: Тестування.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. Ми можемо використовувати додавання слухачів у файл XML безпосередньо.

Хоча вищенаведений підхід додавання @listeners до конкретних класових робіт у набір, що має стільки класів, не вважається приємним підходом додати слухача до кожного класу. Натомість ми можемо створити запис Слухачів та класів у XML-файл.

Крок 1: Створення класу слухачів у 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.

Клас: Тестування.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