TestNG — это мощная среда тестирования, расширенная версия JUnit, которая использовалась в течение долгого времени до появления TestNG. NG означает «Следующее поколение».
Платформа TestNG предоставляет следующие функции —
- Аннотации помогают нам легко организовать тесты.
- Гибкая тестовая конфигурация.
- Тестовые случаи могут быть сгруппированы более легко.
- Распараллеливание тестов может быть достигнуто с помощью TestNG.
- Поддержка тестирования на основе данных.
- Встроенная отчетность.
Установка TestNG для Eclipse
Шаг 1 — Запустите Eclipse и выберите «Установить новое программное обеспечение».
Шаг 2. Введите URL-адрес как «http://beust.com/eclipse» и нажмите «Добавить».
Шаг 3 — Откроется диалоговое окно «Добавить репозиторий». Введите имя как «TestNG» и нажмите «ОК»
Шаг 4 — Нажмите «Выбрать все», и «TestNG» будет выбран, как показано на рисунке.
Шаг 5 — Нажмите «Далее», чтобы продолжить.
Шаг 6 — Просмотрите выбранные элементы и нажмите «Далее».
Шаг 7 — «Принять лицензионное соглашение» и нажать «Готово».
Шаг 8 — TestNG начинает установку, и прогресс будет показан ниже.
Шаг 9 — Предупреждение безопасности появляется, поскольку действительность программного обеспечения не может быть установлена. Нажмите «ОК».
Шаг 10 — Установщик предлагает перезапустить Eclipse, чтобы изменения вступили в силу. Нажмите «Да».
Аннотации в TestNG
Аннотации были формально добавлены к языку Java в JDK 5, и TestNG сделал выбор использовать аннотации для аннотирования тестовых классов. Ниже приведены некоторые преимущества использования аннотаций. Подробнее о TestNG можно найти здесь
-
TestNG определяет интересующие его методы, просматривая аннотации. Следовательно, имена методов не ограничены каким-либо шаблоном или форматом.
-
Мы можем передать дополнительные параметры в аннотации.
-
Аннотации строго напечатаны, поэтому компилятор сразу же отметит любые ошибки.
-
Тестовым классам больше не нужно ничего расширять (например, TestCase, для JUnit 3).
TestNG определяет интересующие его методы, просматривая аннотации. Следовательно, имена методов не ограничены каким-либо шаблоном или форматом.
Мы можем передать дополнительные параметры в аннотации.
Аннотации строго напечатаны, поэтому компилятор сразу же отметит любые ошибки.
Тестовым классам больше не нужно ничего расширять (например, TestCase, для JUnit 3).
Sr.No. | Аннотация и описание |
---|---|
1 |
@BeforeSuite Аннотированный метод будет запущен только один раз до запуска всех тестов в этом наборе. |
2 |
@AfterSuite Аннотированный метод будет запущен только один раз после выполнения всех тестов в этом наборе. |
3 |
@BeforeClass Аннотированный метод будет запущен только один раз, прежде чем будет вызван первый тестовый метод в текущем классе. |
4 |
@После школы Аннотированный метод будет запущен только один раз после запуска всех тестовых методов в текущем классе. |
5 |
@BeforeTest Аннотированный метод будет запущен до запуска любого тестового метода, принадлежащего классам внутри тега <test>. |
6 |
@AfterTest Аннотированный метод будет запущен после запуска всех тестовых методов, принадлежащих классам внутри тега <test>. |
7 |
@BeforeGroups Список групп, которые этот метод конфигурации будет запускать раньше. Этот метод гарантированно будет запущен незадолго до того, как будет вызван первый метод тестирования, принадлежащий любой из этих групп. |
8 |
@AfterGroups Список групп, после которых будет запускаться этот метод конфигурации. Этот метод гарантированно будет запущен вскоре после вызова последнего метода тестирования, принадлежащего любой из этих групп. |
9 |
@BeforeMethod Аннотированный метод будет запускаться перед каждым тестовым методом. |
10 |
@AfterMethod Аннотированный метод будет запускаться после каждого метода тестирования. |
11 |
@DataProvider Отмечает метод как предоставление данных для метода тестирования. Аннотированный метод должен возвращать объект [] [], где каждому объекту [] можно назначить список параметров метода тестирования. Метод @Test, который хочет получать данные от этого DataProvider, должен использовать имя dataProvider, равное имени этой аннотации. |
12 |
@Factory Помечает метод как фабрику, которая возвращает объекты, которые будут использоваться TestNG в качестве тестовых классов. Метод должен возвращать Object []. |
13 |
@Listeners Определяет слушателей на тестовом классе. |
14 |
@Parameters Описывает, как передавать параметры в метод @Test. |
15 |
@Тестовое задание Помечает класс или метод как часть теста. |
@BeforeSuite
Аннотированный метод будет запущен только один раз до запуска всех тестов в этом наборе.
@AfterSuite
Аннотированный метод будет запущен только один раз после выполнения всех тестов в этом наборе.
@BeforeClass
Аннотированный метод будет запущен только один раз, прежде чем будет вызван первый тестовый метод в текущем классе.
@После школы
Аннотированный метод будет запущен только один раз после запуска всех тестовых методов в текущем классе.
@BeforeTest
Аннотированный метод будет запущен до запуска любого тестового метода, принадлежащего классам внутри тега <test>.
@AfterTest
Аннотированный метод будет запущен после запуска всех тестовых методов, принадлежащих классам внутри тега <test>.
@BeforeGroups
Список групп, которые этот метод конфигурации будет запускать раньше. Этот метод гарантированно будет запущен незадолго до того, как будет вызван первый метод тестирования, принадлежащий любой из этих групп.
@AfterGroups
Список групп, после которых будет запускаться этот метод конфигурации. Этот метод гарантированно будет запущен вскоре после вызова последнего метода тестирования, принадлежащего любой из этих групп.
@BeforeMethod
Аннотированный метод будет запускаться перед каждым тестовым методом.
@AfterMethod
Аннотированный метод будет запускаться после каждого метода тестирования.
@DataProvider
Отмечает метод как предоставление данных для метода тестирования. Аннотированный метод должен возвращать объект [] [], где каждому объекту [] можно назначить список параметров метода тестирования. Метод @Test, который хочет получать данные от этого DataProvider, должен использовать имя dataProvider, равное имени этой аннотации.
@Factory
Помечает метод как фабрику, которая возвращает объекты, которые будут использоваться TestNG в качестве тестовых классов. Метод должен возвращать Object [].
@Listeners
Определяет слушателей на тестовом классе.
@Parameters
Описывает, как передавать параметры в метод @Test.
@Тестовое задание
Помечает класс или метод как часть теста.
Установка TestNG-Eclipse
Шаг 1 — Запустите Eclipse и создайте «Новый проект Java», как показано ниже.
Шаг 2 — Введите название проекта и нажмите «Далее».
Шаг 3 — Перейдите на вкладку «Библиотеки» и добавьте файл JAR Selenium Remote Control Server, нажав «Добавить внешние JAR», как показано ниже.
Шаг 4 — Добавленный файл JAR показан здесь. Нажмите «Добавить библиотеку».
Шаг 5 — Откроется диалоговое окно «Добавить библиотеку». Выберите «TestNG» и нажмите «Далее» в диалоговом окне «Добавить библиотеку».
Шаг 6 — Добавлена библиотека «TestNG», и она отображается, как показано ниже.
Шаг 7 — После создания проекта структура проекта будет такой, как показано ниже.
Шаг 8 — Щелкните правой кнопкой мыши по папке ‘src’ и выберите New >> Other.
Шаг 9 — Выберите «TestNG» и нажмите «Далее».
Шаг 10 — Выберите имя «Исходная папка» и нажмите «ОК».
Шаг 11 — Выберите «Имя пакета», «Имя класса» и нажмите «Готово».
Шаг 12 — Будет отображен проводник пакетов и созданный класс.
Первый тест в TestNG
Теперь давайте начнем создавать сценарии с использованием TestNG. Давайте создадим сценарий для того же примера, который мы использовали для понимания WebDriver. Мы будем использовать демонстрационное приложение www.calculator.net и выполнять калькулятор процентов.
В следующем тесте вы заметите, что основного метода НЕТ, так как testNG будет управлять процессом выполнения программы. После инициализации драйвера он выполнит метод «@BeforeTest», затем «@Test», а затем «@AfterTest». Обратите внимание, что в классе может быть любое количество аннотаций «@Test», но «@BeforeTest» и «@AfterTest» могут появляться только один раз.
package TestNG; import java.util.concurrent.TimeUnit; import org.openqa.selenium.*; import org.openqa.selenium.firefox.FirefoxDriver; import org.testng.annotations.AfterTest; import org.testng.annotations.BeforeTest; import org.testng.annotations.Test; public class TestNGClass { WebDriver driver = new FirefoxDriver(); @BeforeTest public void launchapp() { // Puts an Implicit wait, Will wait for 10 seconds before throwing exception driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); // Launch website driver.navigate().to("http://www.calculator.net"); driver.manage().window().maximize(); } @Test public void calculatepercent() { // Click on Math Calculators driver.findElement(By.xpath(".//*[@id='menu']/div[3]/a")).click(); // Click on Percent Calculators driver.findElement(By.xpath(".//*[@id='menu']/div[4]/div[3]/a")).click(); // Enter value 10 in the first number of the percent Calculator driver.findElement(By.id("cpar1")).sendKeys("10"); // Enter value 50 in the second number of the percent Calculator driver.findElement(By.id("cpar2")).sendKeys("50"); // Click Calculate Button driver.findElement(By.xpath(".//*[@id='content']/table/tbody/tr/td[2]/input")).click(); // Get the Result Text based on its xpath String result = driver.findElement(By.xpath(".//*[@id='content']/p[2]/span/font/b")).getText(); // Print a Log In message to the screen System.out.println(" The Result is " + result); if(result.equals("5")) { System.out.println(" The Result is Pass"); } else { System.out.println(" The Result is Fail"); } } @AfterTest public void terminatetest() { driver.close(); } }
выполнение
Для выполнения щелкните правой кнопкой мыши созданный XML и выберите «Запуск от имени» >> «TestNG Suite»
Анализ результатов
Вывод выводится на консоль, и он будет выглядеть, как показано ниже. Вывод на консоль также имеет сводку по выполнению.
Результат TestNG также можно увидеть на другой вкладке. Нажмите на кнопку «HTML Report View», как показано ниже.
Результат HTML будет отображаться, как показано ниже.