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.
- Методы с одинаковым значением приоритета.
- Более одного неприоритетных методов.
пакет 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 в качестве инструмента запуска.
Это руководство стало возможным благодаря вкладу Рамандипа Сингха и Рамы Кришны Гадде.