Селен - 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 будет отображаться, как показано ниже.