TestNG @Test Priority in Selenium

Зміст:

Anonim

TestNG - це тестова структура, яка охоплює різні типи тестових конструкцій, таких як модульний тест, функціональний тест, наскрізний тест, тест інтерфейсу користувача та інтеграційний тест.

Ви можете запустити один або кілька тестових кейсів у коді Testng.

Якщо пріоритет тесту не визначений, виконуючи кілька тестових випадків, TestNG призначає всім @Test пріоритет як нуль (0).

Тепер, під час бігу; нижчі пріоритети будуть призначені першими.

У цьому підручнику ви дізнаєтесь -

  • Демонстрація коду TestNG без пріоритету
  • Демонстрація коду TestNG без пріоритету в алфавітному порядку
  • Як встановити пріоритет у TestNG
  • Методи з однаковим пріоритетом
  • Поєднання як пріоритетних (з однаковим пріоритетом), так і непріоритетних методів

Демонстрація коду TestNG без пріоритету

Давайте візьмемо сценарій, коли для проходження всіх тестових випадків буде потрібно секвенування:

Сценарій: Створіть код, де вам потрібно виконати пошук у Google із певним ключовим словом, скажімо "Facebook". Тепер переконайтеся, що назву браузера змінено на "Facebook - Пошук Google".

Примітка: Кожен крок, який ви кодуєте, має бути окремими методами

Спосіб 1. Відкрийте браузер і скажіть Firefox (openBrowser ())

Спосіб 2 : Запустіть Google.com (launchGoogle ())

Спосіб 3 : Виконайте пошук за допомогою "Facebook" (performSearchAndClick1stLink ())

Спосіб 4 : Перевірте заголовок сторінки пошуку в Google (FaceBookPageTitleVerification ())

Код для нашого сценарію :

імпорт org.openqa.selenium.By;імпорт org.openqa.selenium.WebDriver;імпорт org.openqa.selenium.firefox.FirefoxDriver;імпорт org.testng.Assert;імпорт org.testng.annotations.Test;публічний клас Priority_In_testNG {Драйвер WebDriver;// Спосіб 1: Відкрийте браузер, скажімо Firefox@ Тестpublic void openBrowser () {драйвер = новий FirefoxDriver ();}// Спосіб 2: Запустіть Google.com@ Тестpublic void launchGoogle () {driver.get ("http://www.google.co.in");}// Спосіб 3: Виконайте пошук за допомогою "Facebook"@ Тестpublic void peformSeachAndClick1stLink () {driver.findElement (By.xpath (".//*[@ title = 'Пошук']")). sendKeys ("Facebook");}// Спосіб 4: Перевірте заголовок сторінки пошуку в Google.@ Тестpublic void FaceBookPageTitleVerification () видає виняток {driver.findElement (By.xpath (".//*[@ value = 'Пошук']")). click ();Нитка.спання (3000);Assert.assertEquals (driver.getTitle (). Містить ("Facebook - Пошук Google"), true);}}

Пояснення кодексу

Як зазначалося вище, ми створили 4 тестові кейси для виконання кожної дії незалежними методами.

  • Перший метод (openBrowser) передбачає ініціалізацію браузера Firefox.
  • Другий метод (launchGoogle) стверджує, що запуск Google.com знаходиться в ініціалізованому браузері.
  • Третій метод (peformSeachAndClick1stLink) стверджує, що виконують пошук у вікні пошуку (за допомогою xpath (".//*[@title='Search ']") із пошуковим терміном як Facebook та
  • Четвертий і останній метод (FaceBookPageTitleVerification) стверджує, що клацніть на піктограму пошуку Google і переконайтеся, що назву браузера змінено на Facebook - Google Search.

Тепер запустіть цей код, використовуючи testNG, як показано у відео, і ви виявите, що всі тестові кейси не працюють. Причина помилки: оскільки існує залежність попереднього тесту, який буде пройдено, буде передано лише поточний запущений тест.

В цьому випадку,

  • Перший метод, який виконується, - openBrowser (). Він пройшов, тому що не має ніякої залежності.
  • Другий виконаний метод - FaceBookPageTitleVerification (); це не вдається, тому що ми намагаємось натиснути кнопку пошуку та перевірити назву браузера.
  • Ви можете бачити, що якщо пошукова діяльність не обробляється, то як можна пройти будь-який інший крок. Отже, це причина, через яку мої тестові кейси не проходять.
ПРОЙДЕНО: openBrowserПОМИЛО: FaceBookPageTitleVerificationПОМИЛКА: запустити GoogleПОМИЛКА: peformSeachAndClick1stLink

Демонстрація коду TestNG без пріоритету в алфавітному порядку

Якщо ми не згадуємо жодного пріоритету, testng буде виконувати методи @Test на основі алфавітного порядку їх назв методів, незалежно від місця їх реалізації в коді.

пакет com.guru.testngannotations;імпорт org.testng.annotations.Test;відкритий клас TestNG_Priority_Annotations {@ Тестpublic void c_method () {System.out.println ("Я в методі C");}@ Тестpublic void b_method () {System.out.println ("Я в методі B");}@ Тестpublic void a_method () {System.out.println ("Я в методі A");}@ Тестpublic void e_method () {System.out.println ("Я в методі E");}@ Тестpublic void d_method () {System.out.println ("Я в методі D");}}

Вихідні дані

Я в методі АЯ в методі BЯ в методі СЯ в методі DЯ в методі Е

Хоча ми визначали методи випадковим чином (c, b, a, e, d), testng виконував методи на основі їх назв методів, враховуючи алфавітний порядок, і те ж саме відображалось і в результатах.

Як встановити пріоритет у TestNG

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

Тепер, як ви можете бачити, ми призначили Пріоритет кожному тестовому випадку, що означає, що тестовий випадок буде виконуватися спочатку нижчим значенням пріоритету.

Пріоритет у випробуванні СПГ у дії

імпорт org.openqa.selenium.By;імпорт org.openqa.selenium.WebDriver;імпорт org.openqa.selenium.firefox.FirefoxDriver;імпорт org.testng.Assert;імпорт org.testng.annotations.Test;публічний клас Priority_In_testNG {Драйвер WebDriver;// Спосіб 1: Відкрийте браузер, скажімо Firefox@Test (пріоритет = 1)public void openBrowser () {драйвер = новий FirefoxDriver ();}// Спосіб 2: Запустіть Google.com@Test (пріоритет = 2)public void launchGoogle () {driver.get ("http://www.google.co.in");}// Спосіб 3: Виконайте пошук за допомогою "Facebook"@Test (пріоритет = 3)public void peformSeachAndClick1stLink () {driver.findElement (By.xpath (".//*[@ title = 'Пошук']")). sendKeys ("Facebook");}// Спосіб 4: Перевірте заголовок сторінки пошуку в Google.@Test (пріоритет = 4)public void FaceBookPageTitleVerification () видає виняток {driver.findElement (By.xpath (".//*[@ value = 'Пошук']")). click ();Нитка.спання (3000);Assert.assertEquals (driver.getTitle (). Містить ("Facebook - Пошук Google"), true);}} 

Пояснення кодексу

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

Тут ви бачите, що тестові випадки мають пріоритет. Тестові кейси, що мають нижчий пріоритет, виконуються спочатку, тобто тепер у тестових випадках виконується послідовне виконання відповідно до пріоритету. Отже, усі тестові кейси проходять зараз.

Зверніть увагу на консоль затемнення:

Вихід :

ПРОЙДЕНО: openBrowserПРОЙДЕНО: запуск GoogleПРОЙДЕНО: peformSearchAndClick1stLinkПРОЙДЕНО: FaceBookPageTitleVerification

Число 0 має найвищий пріоритет (він буде виконаний першим), і пріоритет здійснюється на основі заданого числа, тобто 0 має найвищий пріоритет, ніж 1. 1 має найвищий пріоритет, ніж 2 тощо.

пакет com.guru.testngannotations;імпорт org.testng.annotations.Test;відкритий клас TestNG_Priority_Annotations {@Test (пріоритет = 6)public void c_method () {System.out.println ("Я в методі C");}@Test (пріоритет = 9)public void b_method () {System.out.println ("Я в методі B");}@Test (пріоритет = 1)public void a_method () {System.out.println ("Я в методі A");}@Test (пріоритет = 0)public void e_method () {System.out.println ("Я в методі E");}@Test (пріоритет = 3)public void d_method () {System.out.println ("Я в методі D");}}

Вихідні дані

Я в методі ЕЯ в методі АЯ в методі DЯ в методі СЯ в методі B 

Тут ми надали пріоритети як 0,1,3,6,9. Отже, спочатку виконується метод, що має пріоритет 0, а потім метод, що має пріоритет-1 тощо. Тут назва методу алфавітного порядку не буде розглядатися, оскільки ми вказали пріоритети

Методи з однаковим пріоритетом:

Може існувати ймовірність того, що методи можуть містити однаковий пріоритет. У цих випадках testng враховує алфавітний порядок назв методів, пріоритет яких однаковий.

пакет com.guru.testngannotations;імпорт org.testng.annotations.Test;відкритий клас TestNG_Priority_Annotations {@Test (пріоритет = 6)public void c_method () {System.out.println ("Я в методі C");}@Test (пріоритет = 9)public void b_method () {System.out.println ("Я в методі B");}@Test (пріоритет = 6)public void a_method () {System.out.println ("Я в методі A");}@Test (пріоритет = 0)public void e_method () {System.out.println ("Я в методі E");}@Test (пріоритет = 3)public void d_method () {System.out.println ("Я в методі D");}}

Вихідні дані

Я в методі ЕЯ в методі DЯ в методі АЯ в методі СЯ в методі B

Тут 'e' і 'd' виконуються на основі їх пріоритетних значень. Але методи 'a' та 'c' містять однакове значення пріоритету (6). Отже, тут testng розглядає алфавітний порядок "a" і "c" і виконує їх відповідно.

Поєднання як пріоритетних (з однаковим пріоритетом), так і непріоритетних методів:

У цьому випадку ми розглянемо два випадки в одному тестовому класі.

  1. Методи, що мають однакове значення пріоритету.
  2. Більше ніж непріоритетні методи.
пакет com.guru.testngannotations;імпорт org.testng.annotations.Test;відкритий клас TestNG_Priority_Annotations {@Test ()public void c_method () {System.out.println ("Я в методі C");}@Test ()public void b_method () {System.out.println ("Я в методі B");}@Test (пріоритет = 6)public void a_method () {System.out.println ("Я в методі A");}@Test (пріоритет = 0)public void e_method () {System.out.println ("Я в методі E");}@Test (пріоритет = 6)public void d_method () {System.out.println ("Я в методі D");}}

Вихід:

Я в методі BЯ в методі СЯ в методі ЕЯ в методі АЯ в методі D 
ПРОЙДЕНО: b_methodПРОЙДЕНО: c_methodПРОЙДЕНО: e_methodПРОЙДЕНО: a_methodПРОЙДЕНО: d_method

Пояснення:

Перша перевага: непріоритетні методи: 'c' та 'b': На основі алфавітного порядку спочатку було виконано 'b', а потім 'c'.

Друга перевага: пріоритетні методи: 'a', 'e' і 'd': 'e' було виконано першим, оскільки воно мало найвищий пріоритет (0). Оскільки пріоритет методів 'a' та 'd' однаковий, testng враховував алфавітний порядок назв їх методів. Отже, між ними спочатку було виконано «а», а потім «d».

Реєстрація регістрів у TestNG

Тільки для вашої інформації існує стандартний синтаксис для визначення пріоритету в testNG, тобто @Test (пріоритет = 4) , припустимо, ви визначаєте його в іншому синтаксисі, скажімо @Test (PRIORITY = 1), тоді ваша IDE покаже це як помилку компіляції . Зверніть увагу на зображення нижче:

Висновок:

Як ви вже бачили, якщо є потреба запустити набір тестових кейсів у певній послідовності, це можна легко зробити, використовуючи Пріоритет, використовуючи testNG як інструмент запуску.

Цей підручник став можливим завдяки внескам Рамандіпа Сінгха та Рами Крішни Гадде