Підручник з TestNG: Що таке, Анотації & Рамки в селені

Зміст:

Anonim

Що таке TestNG?

TestNG - це система тестування автоматизації, в якій NG розшифровується як "Наступне покоління". TestNG натхненний JUnit, який використовує анотації (@). TestNG долає недоліки JUnit і призначений для спрощення наскрізного тестування.

Використовуючи TestNG, ви можете створити належний звіт, і ви зможете легко дізнатися, скільки тестових випадків пройдено, провалено та пропущено. Ви можете виконати невдалі тестові приклади окремо.

Наприклад:

  • Припустимо, у вас є п'ять тестових кейсів, для кожного тестового випадку написаний по одному методу (припустимо, що програма написана за допомогою основного методу без використання testNG). При першому запуску цієї програми три методи успішно виконуються, а четвертий - не вдається. Потім виправте помилки, наявні в четвертому методі, тепер ви хочете запустити лише четвертий метод, оскільки перші три методи все одно успішно виконуються. Це неможливо без використання TestNG.
  • TestNG у Selenium надає опцію, тобто файл testng-failed.xml у папці test-output. Якщо ви хочете запускати лише невдалі тестові випадки, це означає, що ви запускаєте цей файл XML. Він буде виконувати лише невдалі тестові випадки.

Окрім вищезазначеної концепції, ви дізнаєтесь більше про TestNG, наприклад, про те, які переваги TestNG, про те, як створювати методи тестування за допомогою анотацій @test, як перетворювати ці класи у файл набору тестування та виконувати за допомогою eclipse, а також із командного рядка .

У цьому посібнику з TestNG ви дізнаєтесь

  • Навіщо використовувати TestNG з селеном?
  • Переваги TestNG перед JUnit
  • Створіть тест-кейс, використовуючи анотації TestNG
  • Як створити новий файл тесту TestNG
    • Кодування нашого першого тестового прикладу для тесту на природний газ
    • Запуск тесту
  • Перевірка звітів, створених TestNG
  • Анотації, що використовуються в TestNG
  • Кілька тестових випадків
  • Параметри
    • Кілька параметрів
    • Короткий зміст анотацій TestNG

Навіщо використовувати TestNG з селеном?

Тести на селен за замовчуванням не створюють належного формату результатів тестів. Використовуючи TestNG у селені, ми можемо генерувати результати тесту.

Більшість користувачів селену використовують це більше, ніж Junit, через його переваги. Існує дуже багато можливостей TestNG, але ми зупинимось лише на найважливіших, які ми можемо використовувати в Selenium. Нижче наведені ключові особливості селену TestNG:

  • Створіть звіт у належному форматі, включаючи кількість запусків тестів, кількість пройдених тестів, кількість невдалих тестів і кількість пропущених тестів.
  • Кілька тестових випадків можна простіше згрупувати, перетворивши їх у файл testng.xml. У якому ви можете визначити пріоритети, який тест слід виконати першим.
  • Один і той самий тестовий приклад може бути виконаний кілька разів без циклів, лише за допомогою ключового слова, що називається "count invocation".
  • Використовуючи testng, ви можете виконати кілька тестових кейсів у багатьох браузерах, тобто перехресне тестування браузера.
  • Структуру TestNG можна легко інтегрувати з такими інструментами, як TestNG Maven, Jenkins тощо.
  • Анотації, що використовуються при тестуванні, дуже легко зрозуміти, наприклад: @BeforeMethod, @AfterMethod, @BeforeTest, @AfterTest
  • WebDriver не має власного механізму для створення звітів. TestNG може генерувати звіт у зручному для читання форматі, як показано нижче.
  • TestNG спрощує спосіб кодування тестів. У наших тестах більше немає потреби в статичному основному методі. Послідовність дій регулюється легкими для розуміння анотаціями, які не вимагають статичних методів.
  • Невпіймані винятки автоматично обробляються TestNG, не припиняючи тест передчасно. Ці винятки повідомляються як невдалі кроки у звіті.

Переваги TestNG перед JUnit

Є три основні переваги TestNG перед JUnit:

  • Анотації легше зрозуміти
  • Тестові випадки можна згрупувати простіше
  • Можливе паралельне тестування

Анотації в TestNG - це рядки коду, які можуть керувати виконанням методу нижче . Перед ними завжди стоїть символ @. Дуже ранній і швидкий приклад TestNG - це той, який показаний нижче.

Анотації будуть розглянуті далі в розділі "Анотації, що використовуються в TestNG", тому цілком нормально, якщо ви ще не зрозуміли наведений вище Приклад TestNG. Наразі важливо лише зазначити, що анотації в TestNG легше кодувати та розуміти, ніж у JUnit.

Можливість паралельного запуску тестів доступна в TestNG, але не в JUnit, тому фреймворк TestNG є більш переважним серед тестерів, що використовують Selenium Grid.

Створіть тест-кейс, використовуючи анотації TestNG

Тепер ми дізнаємось, як створити наш перший тестовий приклад, використовуючи Анотації TestNG у селені:

Перш ніж створювати тестовий кейс, слід спочатку налаштувати новий проект TestNG в Eclipse і назвати його "FirstTestNGProject".

Налаштування нового проекту TestNG

Крок 1: Клацніть Файл> Створити> Проект Java

Крок 2: Введіть "FirstTestNGProject" як назву проекту, а потім натисніть кнопку Далі.

Крок 3: Тепер ми почнемо імпортувати бібліотеки TestNG до нашого проекту. Клацніть на вкладку "Бібліотеки", а потім "Додати бібліотеку"

... "

Крок 4: У діалоговому вікні "Додати бібліотеку" виберіть "TestNG" і натисніть "Далі".

Крок 5: Клацніть Готово.

Ви повинні помітити, що TestNG включений до списку бібліотек.

Крок 6: Тепер ми додамо файли JAR, які містять API Selenium. Ці файли знаходяться в драйвері клієнта Java, який ми завантажили з http://docs.seleniumhq.org/download/, коли ми встановлювали Selenium та Eclipse у попередніх розділах.

Потім перейдіть до місця розміщення файлів JAR Selenium.

Після додавання зовнішніх файлів JAR ваш екран повинен виглядати так.

Крок 7: Клацніть Готово та переконайтеся, що наш FirstTestNGProject видно у вікні Провідника пакетів Eclipse.

Як створити новий файл тесту TestNG

Тепер, коли ми закінчили налаштування нашого проекту в цьому посібнику TestNG, давайте створимо новий файл TestNG.

Крок 1: Клацніть правою кнопкою миші на папці пакета "src", а потім виберіть Створити> Інше

...

Крок 2: Клацніть папку TestNG і виберіть опцію "TestNG class". Натисніть Далі.

Крок 3: Введіть зазначені нижче значення у відповідні поля введення та натисніть кнопку Готово. Зверніть увагу, що ми назвали наш файл Java "FirstTestNGFile".

Eclipse повинен автоматично створити шаблон для нашого файлу TestNG, показаний нижче.

Кодування нашого першого тестового прикладу для тесту на природний газ

Давайте зараз створимо наш перший тестовий кейс, який перевірить, чи правильна домашня сторінка Mercury Tours. Введіть свій код, як показано в наведеному нижче прикладі TestNG:

пакунок firsttestngpackage;імпорт org.openqa.selenium. *;імпорт org.openqa.selenium.firefox.FirefoxDriver;імпорт org.testng.Assert;імпорт org.testng.annotations. *;публічний клас firsttestngfile {public String baseUrl = "http://demo.guru99.com/test/newtours/";Рядок driverPath = "C: \\ geckodriver.exe";загальнодоступний драйвер WebDriver;@ Тестpublic void verifyHomepageTitle () {System.out.println ("запуск браузера firefox");System.setProperty ("webdriver.gecko.driver", driverPath);драйвер = новий FirefoxDriver ();драйвер.get (baseUrl);String ожидаемоTitle = "Ласкаво просимо: Меркурій Тури";Рядок actualTitle = driver.getTitle ();Assert.assertEquals (actualTitle, очікуванийTitle);driver.close ();}}

Зверніть увагу на наступне.

  • TestNG не вимагає наявності методу main ().
  • Методи не повинні бути статичними.
  • Ми використовували анотацію @Test. @Test використовується для того, щоб сказати, що метод, що входить до нього, є тестовим прикладом . У цьому випадку ми встановили метод verifyHomepageTitle () як наш тест, тому ми розмістили над ним анотацію '@Test'.
  • Оскільки ми використовуємо анотації в TestNG, нам потрібно було імпортувати пакет org.testng.annotations. *.
  • Ми використовували клас Assert. Клас Assert використовується для проведення перевірочних операцій у TestNG . Для його використання нам потрібно імпортувати пакет org.testng.Assert.

Ви можете мати кілька тестових випадків (отже, кілька анотацій @Test) в одному файлі TestNG. Це буде розглянуто більш докладно далі в розділі "Анотації, що використовуються в TestNG".

Запуск тесту

Щоб запустити тест, просто запустіть файл у Eclipse, як зазвичай. Eclipse забезпечить два виходи - один у вікні Консолі, а другий у вікні Результатів TestNG.

Перевірка звітів, створених TestNG

Вікно консолі в Eclipse надає текстовий звіт про результати нашого тестування, тоді як вікно Результатів TestNG - графічне.

Створення звітів HTML

TestNG має можливість створювати звіти у форматі HTML.

Крок 1: Після запуску нашого FirstTestNGFile, який ми створили в попередньому розділі, клацніть правою кнопкою миші назву проекту (FirstTestNGProject) у вікні Провідника проекту, а потім натисніть опцію "Оновити".

Крок 2: Зверніть увагу, що створено папку "test-output". Розгорніть його та знайдіть файл index.html. Цей файл HTML - це звіт про результати останнього тестового запуску.

Крок 3: Двічі клацніть на цьому файлі index.html, щоб відкрити його у вбудованому веб-браузері Eclipse. Ви можете оновити цю сторінку в будь-який час після повторного запуску тесту, просто натиснувши клавішу F5, як у звичайних веб-браузерах.

Анотації, що використовуються в TestNG

У попередньому розділі ви ознайомилися з анотацією @Test. Тепер ми будемо вивчати більш досконалі анотації та їх використання.

Кілька тестових випадків

Ми можемо використовувати кілька анотацій @Test в одному файлі TestNG. За замовчуванням методи, позначені @Test, виконуються в алфавітному порядку. Дивіться код нижче. Хоча методи c_test, a_test та b_test не розташовані в алфавітному порядку в коді, вони будуть виконуватися як такі.

Запустіть цей код і на створеній сторінці index.html натисніть «Хронологічний огляд».

Параметри

Якщо ви хочете, щоб методи виконувались в іншому порядку, використовуйте параметр "пріоритет". Параметри - це ключові слова, які змінюють функцію анотації .

  • Параметри вимагають присвоєння їм значення. Ви робите. Це, розмістивши біля них , а потім значення.
  • Параметри укладені в пару дужок, які розміщуються відразу після анотації, як фрагмент коду, показаний нижче.

TestNG виконає анотацію @Test із найменшим значенням пріоритету до найбільшого. Не потрібно, щоб ваші пріоритетні значення були послідовними.

Звіт TestNG HTML підтвердить, що методи були виконані на основі зростаючого значення пріоритету.

Кілька параметрів

Окрім "пріоритету", @Test має ще один параметр, який називається "alwaysRun", який може бути встановлений лише як "true" або "false". Щоб використовувати два або більше параметрів в одній анотації, розділіть їх комами, такими як показано нижче.

@Test (пріоритет = 0, alwaysRun = true)

@BeforeTest та @AfterTest

@BeforeTest

методи під цією анотацією будуть виконані до першого тестування у файлі TestNG .

@AfterTest

методи під цією анотацією будуть виконуватися після виконання всіх тестових випадків у файлі TestNG .

Розглянемо наведений нижче код.

пакунок firsttestngpackage;імпорт org.openqa.selenium. *;імпорт org.openqa.selenium.firefox.FirefoxDriver;імпорт org.testng.Assert;імпорт org.testng.annotations. *;публічний клас firsttestngfile {public String baseUrl = "http://demo.guru99.com/test/newtours/";Рядок driverPath = "C: \\ geckodriver.exe";загальнодоступний драйвер WebDriver;@BeforeTestpublic void launchBrowser () {System.out.println ("запуск браузера firefox");System.setProperty ("webdriver.gecko.driver", driverPath);драйвер = новий FirefoxDriver ();драйвер.get (baseUrl);}@ Тестpublic void verifyHomepageTitle () {String ожидаемоTitle = "Ласкаво просимо: Меркурій Тури";Рядок actualTitle = driver.getTitle ();Assert.assertEquals (actualTitle, очікуванийTitle);}@AfterTestpublic void terminateBrowser () {driver.close ();}}

Застосовуючи логіку, представлену таблицею та наведеним вище кодом, ми можемо передбачити, що послідовність, за якою будуть виконуватися методи:

  • 1- й - launchBrowser ()
  • 2- е - verifyHomepageTitle ()
  • 3- й - terminateBrowser ()

Розміщення блоків анотацій можна міняти місцями, не впливаючи на хронологічний порядок, за яким вони будуть виконуватися . Давайте розберемося з прикладом TestNG і спробуємо переставити блоки анотацій так, щоб ваш код виглядав подібним до наведеного нижче.

пакунок firsttestngpackage;імпорт org.openqa.selenium. *;імпорт org.openqa.selenium.firefox.FirefoxDriver;імпорт org.testng.Assert;імпорт org.testng.annotations. *;публічний клас firsttestngfile {public String baseUrl = "http://demo.guru99.com/test/newtours/";Рядок driverPath = "C: \\ geckodriver.exe";загальнодоступний драйвер WebDriver;@AfterTest // Перемішанийpublic void terminateBrowser () {driver.close ();}@BeforeTest // Перемішанийpublic void launchBrowser () {System.out.println ("запуск браузера firefox");System.setProperty ("webdriver.gecko.driver", driverPath);драйвер = новий FirefoxDriver ();драйвер.get (baseUrl);}@Test // Перемішанийpublic void verifyHomepageTitle () {String ожидаемоTitle = "Ласкаво просимо: Меркурій Тури";Рядок actualTitle = driver.getTitle ();Assert.assertEquals (actualTitle, очікуванийTitle);}}

Запустіть наведений вище код і зверніть увагу

@BeforeMethod та @AfterMethod

@BeforeMethod

методи під цією анотацією будуть виконуватися до кожного методу у кожному тестовому випадку .

@AfterMethod

методи під цією анотацією будуть виконуватися після кожного методу у кожному тестовому випадку.

У Mercury Tours, припустимо, ми хочемо перевірити заголовки цільових сторінок двох посилань нижче.

Потік нашого тесту буде таким:

  • Перейдіть на домашню сторінку та перевірте її назву.
  • Клацніть «РЕЄСТРАТИРАЙТЕСЯ» та перевірте заголовок цільової сторінки.
  • Поверніться на домашню сторінку та перевірте, чи вона все ще має правильний заголовок.
  • Клацніть ПІДТРИМКА і перевірте заголовок цільової сторінки.
  • Поверніться на домашню сторінку та перевірте, чи вона все ще має правильний заголовок.

Наведений нижче код ілюструє, як @BeforeMethod та @AfterMethod використовуються для ефективного виконання згаданого вище сценарію.

пакунок firsttestngpackage;імпорт org.openqa.selenium. *;імпорт org.openqa.selenium.firefox.FirefoxDriver;імпорт org.testng.Assert;імпорт org.testng.annotations. *;@ Тестпублічний клас firsttestngfile {public String baseUrl = "http://demo.guru99.com/test/newtours/";Рядок driverPath = "C: \\ geckodriver.exe";загальнодоступний драйвер WebDriver;public String очікується = null;public String actual = null;@BeforeTestpublic void launchBrowser () {System.out.println ("запуск браузера firefox");System.setProperty ("webdriver.gecko.driver", driverPath);драйвер = новий FirefoxDriver ();драйвер.get (baseUrl);}@BeforeMethodpublic void verifyHomepageTitle () {String ожидаемоTitle = "Ласкаво просимо: Меркурій Тури";Рядок actualTitle = driver.getTitle ();Assert.assertEquals (actualTitle, очікуванийTitle);}@Test (пріоритет = 0)публічний реєстр недійсних () {driver.findElement (By.linkText ("РЕЄСТРАЦІЯ")). click ();очікуваний = "Реєстрація: Меркурій Тури";фактичний = driver.getTitle ();Assert.assertEquals (фактичний, очікуваний);}@Test (пріоритет = 1)підтримка публічної недійсності () {driver.findElement (By.linkText ("ПІДТРИМКА")). click ();очікується = "В стадії розробки: Ртутні тури";фактичний = driver.getTitle ();Assert.assertEquals (фактичний, очікуваний);}@AfterMethodpublic void goBackToHomepage () {driver.findElement (By.linkText ("Домашня сторінка")). click ();}@AfterTestpublic void terminateBrowser () {driver.close ();}}

Після виконання цього тесту ваш TestNG повинен повідомити наступну послідовність.

Простіше кажучи, @BeforeMethod повинен містити методи, які потрібно запускати перед кожним тестовим випадком, тоді як @AfterMethod повинен містити методи, які потрібно запускати після кожного тестового випадку.

Короткий зміст анотацій TestNG

@BeforeSuite : Анотований метод буде запущений до того, як будуть запущені всі тести в цьому наборі.

@AfterSuite : Анотований метод буде запущений після запуску всіх тестів у цьому наборі.

@BeforeTest : Анотований метод буде запущений до запуску будь-якого тестового методу, що належить класам всередині тегу.

@AfterTest : Анотований метод буде запущений після запуску всіх методів тестування, що належать до класів всередині тегу.

@BeforeGroups : Список груп, до яких цей метод конфігурації запускався раніше. Цей метод гарантовано працює незадовго до того, як буде викликаний перший метод тестування, який належить до будь-якої з цих груп.

@AfterGroups : Список груп, після яких буде запускатися цей метод конфігурації. Цей метод гарантовано буде запущений незабаром після виклику останнього методу тестування, який належить до будь-якої з цих груп.

@BeforeClass : Анотований метод буде запущений до виклику першого тестового методу в поточному класі.

@AfterClass : Анотований метод буде запущений після запуску всіх методів тестування в поточному класі.

@BeforeMethod : Анотований метод запускатиметься перед кожним тестовим методом.

@AfterMethod : Анотований метод запускатиметься після кожного тестового методу.

@Test : Анотований метод є частиною тесту

Висновок

  • TestNG - це тестовий фреймворк, який спрощує розуміння тестів Selenium та створює зручні для розуміння звіти.
  • Основними перевагами TestNG перед JUnit є наступні.
    • Анотації простіші у використанні та розумінні.
    • Тестові випадки можна згрупувати простіше.
    • TestNG дозволяє нам створювати паралельні тести.
  • Вікно консолі в Eclipse генерує текстовий результат, тоді як вікно TestNG є більш корисним, оскільки воно дає нам графічний результат результату тесту та інші важливі деталі, такі як:
    • Час виконання кожного методу.
    • Хронологічний порядок виконання методів
  • TestNG здатний створювати звіти на основі HTML.
  • Анотації можуть використовувати параметри, як і звичайні методи Java TestNG.
  • TestNG Dataprovider - це спосіб передачі параметрів у тестову функцію, яка передає різні значення в тестових випадках за одне виконання.