TestNG @Приоритет тестирования в Selenium
TestNG - это Тестирование Framework, которая охватывает различные типы тестовых проектов, такие как модульный тест, функциональный тест, сквозной тест, тест пользовательского интерфейса и интеграционный тест.
Вы можете запустить один или несколько тестовых случаев в своем TestNG код.
Если приоритет теста не определен при выполнении нескольких тестовых случаев, TestNG присваивает всем @Test приоритет, равный нулю (0).
Теперь, во время бега; более низкие приоритеты будут запланированы в первую очередь.
Демо TestNG код без приоритета
Давайте возьмем сценарий, в котором для прохождения всех тестовых случаев потребуется секвенирование:
Сценарий: Сгенерируйте код, в котором необходимо выполнить следующее действие. Google Выполните поиск по определенному ключевому слову, например, «Facebook». Теперь убедитесь, что заголовок окна браузера изменился на «Facebook – Google Поиск".
Примечание. Каждый шаг, который вы кодируете, должен быть в отдельных методах.
Метод 1: Откройте браузер, произнесите Firefox (открытый браузер())
Метод 2: Запуск Google.com (запуск)Google())
Метод 3: выполнить поиск с помощью «Facebook» (performSearchAndClick1stLink()).
Метод 4: Проверять Google Заголовок страницы поиска (FaceBookPageTitleVerification())
Code для нашего сценария:
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;
public class Priority_In_testNG {
WebDriver driver;
// Method 1: Open Brower say Firefox
@Test
public void openBrowser() {
driver = new FirefoxDriver();
}
// Method 2: Launch Google.com
@Test
public void launchGoogle() {
driver.get("http://www.google.co.in");
}
// Method 3: Perform a search using "Facebook"
@Test
public void peformSeachAndClick1stLink() {
driver.findElement(By.xpath(".//*[@title='Search']")).sendKeys("Facebook");
}
// Method 4: Verify Google search page title.
@Test
public void FaceBookPageTitleVerification() throws Exception {
driver.findElement(By.xpath(".//*[@value='Search']")).click();
Thread.sleep(3000);
Assert.assertEquals(driver.getTitle().contains("Facebook - Google Search"), true);
}
}
Объяснение Code
Как упоминалось выше, мы создали 4 тестовых примера для выполнения каждого действия в независимых методах.
- Первый способ (открыть браузер) состояния для инициализации Firefox браузер.
- Второй способ (запускGoogle) штаты, которые запускают Google.com находится в инициализированном браузере.
- Третий способ (peformSeachAndClick1stLink)состояния, которые выполняют поиск в поле поиска (с помощью XPath («.//*[@title='Поиск']») с поисковым запросом как Facebook и
- Четвертый и последний способ (FaceBookPageTitleVerification) штаты, которые нажимают на значок поиска Google и убедитесь, что заголовок браузера был изменен на facebook - Google Поиск.
Теперь запустите этот код с помощью testNG, как показано в видео, и вы найдете все Тестовый кейс терпят неудачу. Причина неудачи: поскольку существует зависимость от прохождения предыдущего тестового примера, будет пройден только текущий запущенный тестовый пример.
В этом случае,
- Первый метод, который выполняется: открытыйБраузер(). Он был принят, потому что у него нет никакой зависимости.
- Второй выполненный метод: FaceBookPageTitleVerification(); это не удается, потому что мы пытаемся нажать кнопку поиска и проверить заголовок браузера.
- Вы можете видеть, что если поисковая активность не обрабатывается, то как может быть пройден любой другой шаг. Следовательно, именно по этой причине мои тестовые примеры терпят неудачу.
PASSED: openBrowser FAILED: FaceBookPageTitleVerification FAILED: launchGoogle FAILED: peformSeachAndClick1stLink
Демо TestNG код без приоритета в алфавитном порядке
Если мы не укажем какой-либо приоритет, testng будет выполнять методы @Test в алфавитном порядке их имен независимо от места их реализации в коде.
package com.guru.testngannotations;
import org.testng.annotations.Test;
public class TestNG_Priority_Annotations {
@Test
public void c_method(){
System.out.println("I'm in method C");
}
@Test
public void b_method(){
System.out.println("I'm in method B");
}
@Test
public void a_method(){
System.out.println("I'm in method A");
}
@Test
public void e_method(){
System.out.println("I'm in method E");
}
@Test
public void d_method(){
System.out.println("I'm in method D");
}
}
Результат
I'm in method A I'm in method B I'm in method C I'm in method D I'm in method E
Хотя мы определили методы случайным образом (c, b, a, e, d), testng выполнил методы на основе их имен, учитывая алфавитный порядок, и то же самое отразилось и на выводе.
Как установить приоритет в TestNG
Как вы видели в предыдущем примере, для прохождения этого сценария требуется секвенирование, поэтому мы изменим предыдущий фрагмент кода с помощью Приоритетный параметр так что каждый тест должен выполняться с назначенным ему приоритетом.
Теперь, как вы можете видеть, мы назначили приоритет каждому тестовому примеру, что означает, что тестовый пример с более низким приоритетом будет выполняться первым.
Приоритет в 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;
public class Priority_In_testNG {
WebDriver driver;
// Method 1: Open Browser say Firefox
@Test (priority=1)
public void openBrowser() {
driver = new FirefoxDriver();
}
// Method 2: Launch Google.com
@Test (priority=2)
public void launchGoogle() {
driver.get("http://www.google.co.in");
}
// Method 3: Perform a search using "Facebook"
@Test (priority=3)
public void peformSeachAndClick1stLink() {
driver.findElement(By.xpath(".//*[@title='Search']")).sendKeys("Facebook");
}
// Method 4: Verify Google search page title.
@Test (priority=4)
public void FaceBookPageTitleVerification() throws Exception {
driver.findElement(By.xpath(".//*[@value='Search']")).click();
Thread.sleep(3000);
Assert.assertEquals(driver.getTitle().contains("Facebook - Google Search"), true);
}
}
Объяснение Code
После назначения приоритета каждому тестовому набору запустите приведенный выше код с помощью testNG, как показано в Видео-2, упомянутом ниже.
Здесь вы можете видеть, что тестовые примеры имеют приоритет. Тестовые случаи с более низким приоритетом выполняются первыми, т.е. теперь в тестовых случаях происходит последовательное выполнение в соответствии с приоритетом. Следовательно, все тестовые случаи сейчас проходят успешно.
Обратите внимание на консоль затмения:
Результат :
PASSED: openBrowser PASSED: launchGoogle PASSED: peformSearchAndClick1stLink PASSED: FaceBookPageTitleVerification
Номер 0 имеет наивысший приоритет (он будет выполнен первым), и приоритет продолжается в зависимости от данного номера, т. е. 0 имеет наивысший приоритет, чем 1. 1 имеет наивысший приоритет, чем 2 и так далее.
package com.guru.testngannotations;
import org.testng.annotations.Test;
public class TestNG_Priority_Annotations {
@Test(priority=6)
public void c_method(){
System.out.println("I'm in method C");
}
@Test(priority=9)
public void b_method(){
System.out.println("I'm in method B");
}
@Test(priority=1)
public void a_method(){
System.out.println("I'm in method A");
}
@Test(priority=0)
public void e_method(){
System.out.println("I'm in method E");
}
@Test(priority=3)
public void d_method(){
System.out.println("I'm in method D");
}
}
Результат
I'm in method E I'm in method A I'm in method D I'm in method C I'm in method B
Здесь мы указали приоритеты 0,1,3,6,9. Таким образом, сначала выполняется метод с приоритетом 0, затем метод с приоритетом 1 и так далее. Здесь имя метода в алфавитном порядке не будет учитываться, поскольку мы указали приоритеты.
Методы с одинаковым приоритетом
Может быть вероятность, что методы могут иметь одинаковый приоритет. В этих случаях testng учитывает алфавитный порядок имен методов с одинаковым приоритетом.
package com.guru.testngannotations;
import org.testng.annotations.Test;
public class TestNG_Priority_Annotations {
@Test(priority=6)
public void c_method(){
System.out.println("I'm in method C");
}
@Test(priority=9)
public void b_method(){
System.out.println("I'm in method B");
}
@Test(priority=6)
public void a_method(){
System.out.println("I'm in method A");
}
@Test(priority=0)
public void e_method(){
System.out.println("I'm in method E");
}
@Test(priority=3)
public void d_method(){
System.out.println("I'm in method D");
}
}
Результат
I'm in method E I'm in method D I'm in method A I'm in method C I'm in method B
Здесь «e» и «d» выполняются на основе значений их приоритета. Но методы «a» и «c» содержат одно и то же значение приоритета (6). Итак, здесь testng учитывает алфавитный порядок букв «a» и «c» и выполняет их соответственно.
Сочетание приоритетных (имеющих одинаковый приоритет) и неприоритетных методов.
В этом случае мы рассмотрим два случая в одном классе тестирования.
- Методы, имеющие одинаковое значение приоритета.
- Более одного неприоритетных методов.
package com.guru.testngannotations;
import org.testng.annotations.Test;
public class TestNG_Priority_Annotations {
@Test()
public void c_method(){
System.out.println("I'm in method C");
}
@Test()
public void b_method(){
System.out.println("I'm in method B");
}
@Test(priority=6)
public void a_method(){
System.out.println("I'm in method A");
}
@Test(priority=0)
public void e_method(){
System.out.println("I'm in method E");
}
@Test(priority=6)
public void d_method(){
System.out.println("I'm in method D");
}
}
Выход:
I'm in method B I'm in method C I'm in method E I'm in method A I'm in method D
PASSED: b_method PASSED: c_method PASSED: e_method PASSED: a_method PASSED: d_method
Объяснение:
Первое предпочтение: Методы без приоритета: «c» и «b»: в алфавитном порядке сначала выполнялся «b», а затем «c».
Второе предпочтение: Приоритетные методы: «a», «e» и «d»: «e» выполнялся первым, поскольку имел наивысший приоритет (0). Поскольку приоритеты методов «a» и «d» были одинаковыми, при тестировании учитывался алфавитный порядок имен их методов. Таким образом, между ними сначала выполнялось «a», а затем «d».
С учетом регистра в TestNG
Для вашей информации существует стандартный синтаксис для определения приоритета в testNG, т.е. @Тест (приоритет=4), предположим, что вы определяете его в каком-то другом синтаксисе, скажем @Тест (ПРИОРИТЕТ=1) тогда ваша IDE покажет это как ошибку компиляции. См. изображение ниже:
Заключение
Как вы видели, если требуется запустить набор тестовых примеров в определенной последовательности, это можно легко сделать, используя приоритет использование testNG в качестве инструмента запуска.
Это руководство стало возможным благодаря вкладу Рамандипа Сингха и Рамы. Krishna Гадде

