TestNG @Test Priority в Selenium

Содержание:

Anonim

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

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

Если приоритет теста не определен во время выполнения нескольких тестовых примеров, TestNG присваивает всем @Test приоритет как ноль (0).

Теперь во время бега; более низкие приоритеты будут запланированы первыми.

В этом руководстве вы узнаете -

  • Демонстрация кода TestNG без приоритета
  • Демонстрация кода TestNG без приоритета в алфавитном порядке
  • Как установить приоритет в TestNG
  • Методы с одинаковым приоритетом
  • Сочетание как приоритетных (имеющих одинаковый приоритет), так и неприоритетных методов

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

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

Сценарий: сгенерируйте код, в котором вам необходимо выполнить поиск в Google с определенным ключевым словом, например «Facebook». Теперь убедитесь, что заголовок браузера изменен на «Facebook - Google Search».

Примечание: каждый шаг, который вы кодируете, должен быть отдельным методом.

Метод 1. Откройте браузер, скажем, Firefox (openBrowser ())

Метод 2 : запустить Google.com (launchGoogle ())

Метод 3. Выполните поиск с помощью «Facebook» (performSearchAndClick1stLink ())

Метод 4 : проверьте заголовок страницы поиска Google (FaceBookPageTitleVerification ())

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

import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.firefox.FirefoxDriver;import org.testng.Assert;import 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 = 'Search']"). click ();Thread.sleep (3000);Assert.assertEquals (driver.getTitle (). Contains ("Facebook - Google Search"), 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;import org.testng.annotations.Test;открытый класс TestNG_Priority_Annotations {@Тестpublic void c_method () {System.out.println («Я использую метод C»);}@Тестpublic void b_method () {System.out.println («Я использую метод Б»);}@Тест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Я использую метод CЯ использую метод DЯ использую метод E

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

Как установить приоритет в TestNG

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

Теперь, как вы можете видеть, мы назначили Priority для каждого тестового примера, что означает, что в тестовом примере сначала будет выполнено значение с более низким приоритетом.

Приоритет testNG в действии

import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.firefox.FirefoxDriver;import org.testng.Assert;import 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 = 'Search']"). click ();Thread.sleep (3000);Assert.assertEquals (driver.getTitle (). Contains ("Facebook - Google Search"), true);}} 

Объяснение кода

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

Здесь вы можете видеть, что тестовые примеры имеют приоритет. Сначала выполняются тестовые примеры с более низким приоритетом, т.е. теперь в тестовых примерах выполняется последовательное выполнение в соответствии с приоритетом. Следовательно, все тестовые примеры сейчас пройдены.

Обратите внимание на консоль eclipse:

Выход :

ПРОЙДЕНО: openBrowserПРОШЛО: запустить GoogleПРОЙДЕНО: peformSearchAndClick1stLinkПРОЙДЕН: FaceBookPageTitleVerification

Номер 0 имеет наивысший приоритет (он будет выполнен первым), и приоритет зависит от данного числа, т.е. 0 имеет наивысший приоритет, чем 1. 1 имеет наивысший приоритет, чем 2, и так далее.

пакет com.guru.testngannotations;import 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 («Я использую метод Б»);}@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»);}}

Выход

Я использую метод EЯ использую метод АЯ использую метод DЯ использую метод CЯ использую метод B 

Здесь мы установили приоритеты как 0,1,3,6,9. Итак, сначала выполняется метод с приоритетом 0, затем метод с приоритетом 1 и так далее. Здесь имя метода в алфавитном порядке не учитывается, так как мы указали приоритеты

Методы с одинаковым приоритетом:

Может быть вероятность, что методы могут иметь одинаковый приоритет. В этих случаях testng учитывает алфавитный порядок имен методов с одинаковым приоритетом.

пакет com.guru.testngannotations;import 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 («Я использую метод Б»);}@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»);}}

Выход

Я использую метод EЯ использую метод DЯ использую метод АЯ использую метод CЯ использую метод B

Здесь 'e' и 'd' выполняются на основе их значений приоритета. Но методы 'a' и 'c' содержат одинаковое значение приоритета (6). Итак, здесь testng учитывает алфавитный порядок «а» и «с» и выполняет их соответственно.

Сочетание как приоритетных (имеющих одинаковый приоритет), так и неприоритетных методов:

В этом случае мы рассмотрим два случая в одном классе testng.

  1. Методы с одинаковым значением приоритета.
  2. Более одного неприоритетных методов.
пакет com.guru.testngannotations;import org.testng.annotations.Test;открытый класс TestNG_Priority_Annotations {@Тест()public void c_method () {System.out.println («Я использую метод C»);}@Тест()public void b_method () {System.out.println («Я использую метод Б»);}@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Я использую метод CЯ использую метод EЯ использую метод АЯ использую метод D 
ВЫПОЛНЕНО: b_methodВЫПОЛНЕНО: c_methodВЫПОЛНЕНО: e_methodВЫПОЛНЕНО: a_methodВЫПОЛНЕНО: d_method

Объяснение:

Первое предпочтение: методы без приоритета: «c» и «b»: в соответствии с алфавитным порядком сначала выполнялось «b», а затем «c».

Второе предпочтение: приоритетные методы: 'a', 'e' и 'd': 'e' выполнялись первыми, поскольку они имели наивысший приоритет (0). Поскольку приоритет методов «a» и «d» был одинаковым, testng учитывал алфавитный порядок названий их методов. Итак, между ними сначала было исполнено «а», а затем «д».

С учетом регистра в TestNG

Просто для вашей информации существует стандартный синтаксис для определения приоритета в testNG, т.е. @Test (priority = 4) , предположим, вы определяете его в каком-то другом синтаксисе, скажем, @Test (PRIORITY = 1), тогда ваша IDE покажет это как ошибку компиляции . См. Изображение ниже:

Вывод:

Как вы видели, если есть требование запустить набор тестовых примеров в определенной последовательности, это можно легко сделать с помощью Priority, используя testNG в качестве инструмента запуска.

Это руководство стало возможным благодаря вкладу Рамандипа Сингха и Рамы Кришны Гадде.