Селен - TestNG
TestNG - это мощный фреймворк для тестирования, расширенная версия JUnit, которая использовалась задолго до появления TestNG. NG означает «Следующее поколение».
Фреймворк TestNG предоставляет следующие функции -
- Аннотации помогают нам легко организовать тесты.
- Гибкая конфигурация теста.
- Контрольные примеры можно легко сгруппировать.
- Распараллеливание тестов может быть достигнуто с помощью TestNG.
- Поддержка тестирования на основе данных.
- Встроенная отчетность.
Установка TestNG для Eclipse
Step 1 - Запустите Eclipse и выберите «Установить новое программное обеспечение».
Step 2 - Введите URL как «http://beust.com/eclipse» и нажмите «Добавить».
Step 3- Откроется диалоговое окно «Добавить репозиторий». Введите имя как «TestNG» и нажмите «ОК».
Step 4 - Нажмите «Выбрать все», и «TestNG» будет выбран, как показано на рисунке.
Step 5 - Нажмите «Далее», чтобы продолжить.
Step 6 - Просмотрите выбранные элементы и нажмите «Далее».
Step 7 - «Примите лицензионное соглашение» и нажмите «Готово».
Step 8 - TestNG начинает установку, и прогресс будет показан следующим образом.
Step 9- Предупреждение о безопасности появляется, поскольку достоверность программного обеспечения не может быть установлена. Щелкните "ОК".
Step 10- Программа установки предложит перезапустить Eclipse, чтобы изменения вступили в силу. Щелкните "Да".
Аннотации в TestNG
Аннотации были официально добавлены к языку Java в JDK 5, и TestNG сделал выбор в пользу использования аннотаций для аннотирования тестовых классов. Ниже приведены некоторые преимущества использования аннотаций. Подробнее о TestNG можно найтиhere
TestNG определяет интересующие его методы, просматривая аннотации. Следовательно, имена методов не ограничиваются каким-либо шаблоном или форматом.
Мы можем передавать аннотациям дополнительные параметры.
Аннотации строго типизированы, поэтому компилятор сразу помечает любые ошибки.
Тестовые классы больше не нуждаются в расширении (например, TestCase для JUnit 3).
Sr. No. | Аннотация и описание |
---|---|
1 | @BeforeSuite Аннотированный метод будет запущен только один раз перед запуском всех тестов в этом наборе. |
2 | @AfterSuite Аннотированный метод будет запущен только один раз после запуска всех тестов в этом наборе. |
3 | @BeforeClass Аннотированный метод будет запущен только один раз перед вызовом первого тестового метода в текущем классе. |
4 | @AfterClass Аннотированный метод будет запущен только один раз после запуска всех тестовых методов в текущем классе. |
5 | @BeforeTest Аннотированный метод будет запущен перед запуском любого тестового метода, принадлежащего классам внутри тега <test>. |
6 | @AfterTest Аннотированный метод будет запущен после выполнения всех тестовых методов, принадлежащих классам внутри тега <test>. |
7 | @BeforeGroups Список групп, в которых этот метод настройки будет запускаться раньше. Этот метод гарантированно запускается незадолго до вызова первого тестового метода, принадлежащего любой из этих групп. |
8 | @AfterGroups Список групп, после которых будет запускаться этот метод настройки. Этот метод гарантированно запускается вскоре после вызова последнего тестового метода, принадлежащего любой из этих групп. |
9 | @BeforeMethod Аннотированный метод будет запускаться перед каждым методом тестирования. |
10 | @AfterMethod Аннотированный метод будет запускаться после каждого метода тестирования. |
11 | @DataProvider Помечает метод как предоставляющий данные для метода тестирования. Аннотированный метод должен возвращать Object [] [], где каждому Object [] может быть назначен список параметров метода тестирования. Метод @Test, который хочет получать данные от этого DataProvider, должен использовать имя dataProvider, равное имени этой аннотации. |
12 | @Factory Помечает метод как фабрику, которая возвращает объекты, которые будут использоваться TestNG как классы Test. Метод должен возвращать Object []. |
13 | @Listeners Определяет слушателей в тестовом классе. |
14 | @Parameters Описывает, как передавать параметры методу @Test. |
15 | @Test Отмечает класс или метод как часть теста. |
Настройка TestNG-Eclipse
Step 1 - Запустите Eclipse и создайте «Новый проект Java», как показано ниже.
Step 2 - Введите название проекта и нажмите «Далее».
Step 3 - Перейдите на вкладку «Библиотеки» и добавьте файл JAR сервера удаленного управления Selenium, щелкнув «Добавить внешние файлы JAR», как показано ниже.
Step 4- Здесь отображается добавленный файл JAR. Щелкните "Добавить библиотеку".
Step 5- Откроется диалоговое окно «Добавить библиотеку». Выберите «TestNG» и нажмите «Далее» в диалоговом окне «Добавить библиотеку».
Step 6 - Добавлена библиотека TestNG, которая отображается, как показано ниже.
Step 7 - После создания проекта его структура будет такой, как показано ниже.
Step 8 - Щелкните правой кнопкой мыши папку «src» и выберите «Создать» >> «Другое».
Step 9 - Выберите «TestNG» и нажмите «Далее».
Step 10 - Выберите имя «Исходная папка» и нажмите «ОК».
Step 11 - Выберите «Имя пакета», «Имя класса» и нажмите «Готово».
Step 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», как показано ниже.
Результат HTML будет отображаться, как показано ниже.