Группы в TestNG
⚡ Умное резюме
Группы в TestNG Позволяет помечать тестовые методы логическими метками, а затем включать или исключать их с помощью XML-пакета. Такой подход упрощает дымовое, регрессионное и зависимостное тестирование без переписывания кода. Java код.

TestNG Это фреймворк для тестирования, который охватывает модульные, функциональные, сквозные, пользовательские и интеграционные тесты для Java проектов.
Вы можете запустить один или несколько пакетов (пакет инкапсулирует связанные классы в определенной структуре каталогов), создав XML-пакет и запустив его через Maven.
TestNG Группы с примером
Группы используются в TestNG когда:
- Не стоит разбрасывать тестовые методы по множеству классов, руководствуясь исключительно функциональной областями, и
- Вы хотите пропустить (а не выполнить) выбранные тестовые случаи, как если бы они отсутствовали в коде.
- Для достижения обеих целей вы объединяете методы в логические группы. TestNG затем учитывает фильтры «включить» и «исключить», объявленные в XML-пакете.
Приведённый ниже фрагмент кода демонстрирует синтаксис групповой маркировки, используемый в тестовом методе.
Здесь используются два названия групп, а именно: bonding и strong_tiesЭто логичные метки, которые вы можете переименовать в соответствии со своим проектом.
<groups> Этот тег обозначает начало групповых фильтров внутри XML-пакета.
Затем вы настраиваете XML-код, чтобы выбрать нужную группу из помеченных классов. В приведенном ниже примере показан синтаксис объявления группы.
<пробег>
<включают имя=«сближение» />
</пробег>
</группы>
Предположим, что один класс содержит 10 тестовых методов.
Из этих методов:
- 6 метода обеспечивают
bondingгруппа и - 4 метода обеспечивают
strong_tiesгруппа.
Далее вы настраиваете Maven и Java пути и использовать Eclipse IDE для демонстрации группового использования с помощью XML-файлов внутри JavaПроект на основе Maven.
Создать XML для TestNG с тэгами
- В Maven XML-файл (Extensible Markup Language) хранит конфигурацию для одного или нескольких тестов, объявленных внутри файла. тег.
- Каждая тестовая запись заключена в бирка и может вмещать одну или несколько TestNG классов.
- A Java класс с одним или несколькими @Контрольная работа Аннотации к его методам рассматриваются как TestNG класса.
Для создания рабочего файла testng.xml последовательно отображается несколько тегов, а именно: , , и .
- В теге указывается имя уровня пакета, используемое в TestNG отчеты для сводных данных об исполнении.
- <test name=”Guru 99-градусная демонстрация дымоудаления В теге содержится логическое имя теста; в отчете оно используется для подсчета пройденных, не пройденных и пропущенных тестов, а также для учета общего времени выполнения и метаданных группы.
- Тег указывает на тестовый класс, где
com.group.guru99это пакет иTC_Class1— это название класса.
<!DOCTYPE suite СИСТЕМА “http://testng.org/testng-1.0.dtd”>
<suite имя=«Сюита»>
<тест имя= Guru Демонстрация дымоудаления на 99%>
<группы>
<пробег>
<включают имя=“strong_ties” />
</пробег>
</группы>
<классов>
<класс имя=“com.group.guru99.TC_Class1” />
</классов>
</тест>
</suite>
Данная XML-конфигурация будет рассмотрена в видеоинструкциях в следующих разделах.
«исключить» или «включить» в тестовый XML
Если механизм группировки кажется слишком сложным для небольшого фильтра, набор тестов testng.xml также позволяет исключать или включать отдельные методы тестирования по имени.
Включить тег: Синтаксис для тега includeвключают имя=“${TEST_CASE_NAME}” />
Примечание: В одном запуске можно включить или исключить множество тестовых случаев, и тот же синтаксис применяется к групповым фильтрам.
Использование dependsOnGroups для упорядоченного выполнения
Помимо простого включения, TestNG позволяет одной группе зависеть от другой, используя dependsOnGroups атрибут. Исполнитель гарантирует, что каждый метод в родительской группе завершится до начала любого зависимого метода, что обеспечивает надежность предварительных условий.
- Сначала авторизация, затем транзакции: Пометить методы входа в систему тегом
group = "auth"и тесты переноса тегов сdependsOnGroups = {"auth"}Проверка передачи данных запускается только после успешного входа в систему. - Избегайте неудач: Если какой-либо метод в родительской группе завершится неудачей, TestNG Вместо того чтобы сразу отключать их, система помечает зависимые методы как пропущенные, что обеспечивает корректность отчетов.
- В сочетании с alwaysRun: Методы очистки должны быть установлены
alwaysRun = trueТаким образом, процесс очистки продолжается даже при сбое в вышестоящей группе.
Такая схема характерна для комплексных тестовых пакетов, где настройка API должна завершиться до начала проверки пользовательского интерфейса.
Run TestNG Группировать, включать, исключать код (демо-видео)
Ниже представлен пошаговый обзор Java код и набор XML-файлов, которые обеспечивают работу группировать, исключать и включать поведение.
Сценарий тестирования: Запустить GuruНа демонстрационном банковском сайте (99 пунктов) проверьте несколько элементов на странице входа, введите учетные данные и повторно проверьте несколько пунктов на панели управления после входа в систему.
Примечание: Каждый шаг выполняется в отдельном методе, но во время выполнения порядок зависит от записей в XML-пакете.
- Метод 1: Инициализируйте браузер и запустите его. URL (
tc01LaunchURL()). - Метод 2: Проверьте заголовок страницы входа (
tc02VerifyLaunchPage()). - Метод 3: Введите имя пользователя и пароль в форму входа (
tc03EnterCredentials()). - Метод 4: Проверьте наличие идентификатора менеджера на панели управления пользователя (
tc04VerifyLoggedInPage()). - Метод 5: Проверьте дополнительные ссылки на панели управления пользователя (
tc05VerifyHyperlinks()).
Code для данного сценария:
Импортировать java.util.concurrent.TimeUnit;
Импортировать org.openqa.selenium.By;
Импортировать org.openqa.selenium.WebDriver;
Импортировать org.openqa.selenium.firefox.FirefoxДрайверы;
Импортировать org.testng.Assert;
Импортировать org.testng.annotations.Test;
открытый класс TC_Class1 {
публичный статический финал Вебдрайвер webDriver = новый FirefoxВодитель();
строка launchPageHeading = “//h3[text()='Guru99 Банк']”;
окончательный строка userName_element = “//input[@name='uid']”, password_element = “//input[@name='password']”,
signIn_element = “//input[@name='btnLogin']”;
окончательный строка userName_value = “mngr28642”, password_value = “ydAnate”;
окончательный строка managerID = “//td[contains(text(),'Manger Id')]”;
окончательный строка новыйКлиент = “//a[@href='addcustomerpage.php']”, fundTransfer = “//a[@href='FundTransInput.php']”;
/** Этот тестовый пример инициализирует webDriver */
@Контрольная работа(группы знак равно «сближение», “strong_ties” })
общественная пустота tc01LaunchURL() {
webDriver.manage().window().maximize();
webDriver.manage().timeouts().implicitlyWait(20, Единица Времени.СЕКУНДЫ);
webDriver.get(«https://www.demo.guru99.com/V4/»);
}
/** Проверяет наличие заголовка на странице входа */
@Контрольная работа(группы знак равно «сближение» })
общественная пустота tc02VerifyLaunchPage() {
Assert.assertTrue(webDriver.findElement(By.xpath(launchPageHeading)).isDisplayed(),
«Заголовок главной страницы не отображается»);
System.out.println («Отображается заголовок главной страницы»);
}
/** Вводит имя пользователя, пароль, затем нажимает кнопку "Войти" */
@Контрольная работа(группы знак равно «сближение», “strong_ties” })
общественная пустота tc03EnterCredentials() {
webDriver.findElement(By.xpath(userName_element)).sendKeys(userName_value);
webDriver.findElement(By.xpath(password_element)).sendKeys(password_value);
webDriver.findElement(By.xpath(signIn_element)).click();
}
/** Проверяет идентификатор менеджера на панели управления */
@Контрольная работа(группы знак равно “strong_ties” })
общественная пустота tc04VerifyLoggedInPage() {
Assert.assertTrue(webDriver.findElement(By.xpath(managerID)).isDisplayed(),
«Идентификационная метка менеджера не отображается»);
System.out.println («Отображается идентификационная этикетка кормушки»);
}
/** Проверяет ссылки «Новый клиент» и «Перевод средств» на панели управления */
@Контрольная работа(группы знак равно «сближение» })
общественная пустота tc05VerifyHyperlinks() {
Assert.assertTrue(webDriver.findElement(By.xpath(newCustomer)).isEnabled(),
«Гиперссылка для новых клиентов не отображается»);
System.out.println («Отображается гиперссылка для нового клиента»);
Assert.assertTrue(webDriver.findElement(By.xpath(fundTransfer)).isEnabled(),
«Гиперссылка для перевода средств не отображается»);
System.out.println («Отображается гиперссылка для перевода средств»);
}
}
Обратите внимание: демонстрационные банковские учетные данные действительны примерно 20 дней, поэтому при локальном запуске после истечения этого срока может появиться ошибка «неверные учетные данные».
Расшифровка кода:
Пять методов проверки, по одному на каждое действие, каждый из которых включает в себя groups атрибут на @Test аннотаций.
Две логические метки группы: strong_ties и bonding.
- Первый и третий методы включают в себя оба варианта.
bondingиstrong_tiesТаким образом, они запускаются всякий раз, когда любая из этих групп включена в набор тестов. Это распространенный шаблон для общих тестов. прецедент шаги. - Второй метод помечен только тегом
bonding, поэтому он запускается только тогда, когдаbondingгруппа включена. - Четвертый метод помечен только тегом
strong_tiesТаким образом, программа запускается только при наличии этой группы. - Пятый метод помечен только тегом
bonding, поэтому он запускается только тогда, когдаbondingгруппа включена.
Ниже представлены четыре сценария выполнения:
Сценарий 1: Запустите все методы тестирования независимо от группы. Удалите <groups> блок из исполняемого XML-файла.
Сценарий 2: Выполнять только методы, относящиеся к выбранной группе, а именно: strong_ties or bondingПожалуйста, посмотрите видео ниже.
- В первой части видео...
<groups>Блок закомментирован, поэтому выполняются все тестовые методы. - Во второй части восстанавливается групповой фильтр, и запускаются только соответствующие методы.
Сценарий 3: Примените фильтр исключения, чтобы пропустить выбранные тестовые случаи. См. видео.
- Демоверсия не включает
tc02по имени в исполняемом XML-файле, и отчет о результатах подтверждает, что исключенный метод не выполняется.
Сценарий 4: Примените фильтр включения, чтобы запускать только определенные программы. tc01LaunchURL, tc03EnterCredentials и tc05VerifyHyperlinksПожалуйста, посмотрите видео.
В этом режиме выполнения выполняются только методы, перечисленные в фильтре include, в точности в соответствии с настройкой.
Скачайте пример проекта по ссылке ниже.
Заключение
Группы в TestNG придать структуру крупным проектам Selenium и модульных наборов, заменив разовое разделение классов декларативными XML-фильтрами.
Помечайте свои методы тегами @Test(groups = {...})затем используйте <include>, <exclude> и dependsOnGroups для запуска дымовых, регрессионных и сквозных тестов из одного и того же проекта Maven TestNG 7.x.

