Въведение в слушателите в 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: Първата и най-важна стъпка е да се създаде клас за слушателя, който реализира 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