TestNG — это инфраструктура тестирования , охватывающая различные типы проектов тестирования, такие как модульные, функциональные, сквозные, пользовательский интерфейс и интеграционные тесты.
Вы можете запустить один или несколько пакетов (под пакетом здесь подразумевается инкапсуляция группы классов в правильном формате директора), создав XML и запустив его через maven.
В этом уроке вы узнаете
- TestNG группы с примером
- Установите maven и путь Java в переменной среды (для пользователя windows)
- Введение в XML и как сделать файлы XML
- Другой механизм вместо группировки — «исключать» или «включать» в тестовый XML
- Как запустить код с использованием файла XML (видео-демонстрация)
TestNG группы с примером
Мы используем группы в Testng, когда,
- Мы не хотим определять методы тестирования отдельно в разных классах (в зависимости от функциональности) и
- В то же время хотите игнорировать (не выполнять) некоторые контрольные примеры, как будто их нет в коде.
- Таким образом, чтобы осуществить это, мы должны сгруппировать их. Это делается с помощью механизмов «include» и «exclude», поддерживаемых в testNG.
В приведенном ниже примере мы показали синтаксис использования групп в файле XML.
@Test (groups = { "bonding", "strong_ties" })
Здесь мы используем 2 имени группы, то есть «bonding» и «strong_ties» (это логические имена, которые могут быть изменены по вашему желанию).
Тег <groups> определяет начало групп в XML.
Настройте свой XML, чтобы выбрать упомянутую группу из тестовых классов. Ниже приведен синтаксис объявления групп в файле XML, например:
<groups> <run> <include name="bonding" /> </run> </groups>
Итак, предположим, что в классе есть 10 методов тестирования.
Из них,
- 6 методов помечены в группе «склеивание» и
- 4 в группе «strong_ties»
В дальнейшем мы собираемся установить путь maven / Java и использовать Eclipse IDE, чтобы продемонстрировать использование групп, использующих файлы XML, в проекте maven на основе Java .
Установите maven и путь Java в переменной среды (для пользователя windows)
Пожалуйста, обратитесь https://www.guru99.com/maven-jenkins-with-selenium-complete-tutorial.html
https://www.guru99.com/install-java.html
Введение в XML и как сделать файлы XML
- Файл XML (расширяемый язык разметки) в среде Maven содержит информацию об одном или нескольких тестах и определяется тегом <suite> .
- Тестовая информация в XML представлена тегом <test> и может содержать один или несколько классов TestNG.
- Класс Java, который содержит аннотацию @Test выше тестовых методов, определяется как методы TestNG.
Несколько тегов используются в последовательности для создания рабочего testNG XML, такого как <suite>, <test> и <class>
- Во-первых, это тег <suite>, который содержит логическое имя, которое определяет полную информацию для testNG, о которой сообщается для генерации отчета о выполнении.
- Во-вторых, <test name = «Guru 99 Smoke Test Demo»>, обратите внимание, что это логическое имя, которое содержит информацию отчета о выполнении теста, такую как прохождение, неудача, пропуск тестовых случаев и другую информацию, такую как общее время выполнения и информацию о группе
- В-третьих, <class name = » com.group.guru99.TC_Class1 » />, com.group.guru99 — используемый пакет, а имя тестового класса — TC_Class1.
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> <suite name="Suite"> <test name="Guru 99 Smoke Test Demo"> <groups> <run> <include name="strong_ties" /> </run> </groups> <classes> <class name="com.group.guru99.TC_Class1" /> </classes> </test> </suite>
Мы будем использовать этот XML для будущего видео.
Другой механизм вместо группировки — «исключить» или «включить» в тестовом XML
Предположим, вы обнаружите использование комплекса групповых механизмов, а testNG XML упростит функциональность для исключения / включения теста.
Exclude Tag: Syntax for exclude tag <exclude name="${TEST_CASE_NAME}" /> Include Tag: Syntax for include tag <include name="${TEST_CASE_NAME}" />
Примечание. Мы можем включать / исключать несколько тестовых примеров по одному, и это также работает с группами.
Как запустить код с использованием файла XML (видео-демонстрация)
Объяснение кода Java и XML с группой, исключить и включить тег в XML.
- Сценарий : Запустите демонстрационный банковский сайт Guru99, проверьте, что некоторые вещи на странице входа в систему после этого введите учетные данные и повторно проверьте несколько новых вещей в приложении при входе в систему.
Примечание . Каждый шаг, который вы кодируете, должен быть объявлен в отдельных методах, но при выполнении он будет выполнять тестовые методы в зависимости от записей в файле XML.
Способ 1. Инициализируйте браузер и запустите URL-адрес (tc01LaunchURL ())
Способ 2. Проверка заголовка страницы входа (tc02VerifyLaunchPage ())
Способ 3 : введите имя пользователя и пароль в форме входа (tc03EnterCredentials ())
Способ 4. Проверьте наличие идентификатора диспетчера на панели пользователя (tc04VerifyLoggedInPage ())
Способ 5 : проверьте еще несколько ссылок на панели пользователя (tc05VerifyHyperlinks ())
Код для нашего сценария:
package com.group.guru99; import java.util.concurrent.TimeUnit; 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 TC_Class1 { public static final WebDriver webDriver = new FirefoxDriver();; String launchPageHeading = "//h3[text()='Guru99 Bank']"; final String userName_element = "//input[@name='uid']", password_element = "//input[@name='password']", signIn_element = "//input[@name='btnLogin']"; final String userName_value = "mngr28642", password_value = "ydAnate"; final String managerID = "//td[contains(text(),'Manger Id')]"; final String newCustomer = "//a[@href='addcustomerpage.php']", fundTransfer = "//a[@href='FundTransInput.php']"; /** * This test case will initialize the webDriver */ @Test(groups = { "bonding", "strong_ties" }) public void tc01LaunchURL() { webDriver.manage().window().maximize(); webDriver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS); webDriver.get("http://www.demo.guru99.com/V4/"); } /** * Will check the presence of Heading on Login Page */ @Test(groups = { "bonding" }) public void tc02VerifyLaunchPage() { Assert.assertTrue(webDriver.findElement(By.xpath(launchPageHeading)).isDisplayed(), "Home Page heading is not displayed"); System.out.println("Home Page heading is displayed"); } /** * This test case will enter User name, password and will then click on * signIn button */ @Test(groups = { "bonding", "strong_ties" }) public void 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(); } /** * This test case will verify manger's ID presence on DashBoard */ @Test(groups = { "strong_ties" }) public void tc04VerifyLoggedInPage() { Assert.assertTrue(webDriver.findElement(By.xpath(managerID)).isDisplayed(), "Manager ID label is not displayed"); System.out.println("Manger Id label is displayed"); } /** * This test case will check the presence of presence of New customer link * And FundTransfer link in Left pannel */ @Test(groups = { "bonding" }) public void tc05VerifyHyperlinks() { Assert.assertTrue(webDriver.findElement(By.xpath(newCustomer)).isEnabled(), "New customer hyperlink is not displayed"); System.out.println("New customer hyperlink is displayed"); Assert.assertTrue(webDriver.findElement(By.xpath(fundTransfer)).isEnabled(), "Fund Transfer hyperlink is not displayed"); System.out.println("Fund Transfer hyperlink is displayed"); } }
Обратите внимание: учетные данные действительны только в течение 20 дней, поэтому, если вы пытаетесь запустить код на локальном компьютере, вы можете столкнуться с ошибкой неверных учетных данных. Пожалуйста, найдите ниже шаги для создания ваших учетных данных:
- Запустите http://www.demo.guru99.com
- Введите свой адрес электронной почты в поле.
- Нажмите ввод и увидите ваши данные для входа на экране.
Объяснение кода:
Как уже упоминалось выше, мы создали 5 тестовых случаев для выполнения каждого действия в независимых методах.
Вы можете заметить, что с каждым методом мы связали групповой параметр, содержащий некоторое значение в нем.
По сути, это название дифференцирующих групп, т. Е. «Strong_ties» и «bonding».
- Первый и третий методы помечены как «bonding», «strong_ties», что означает, что если XML обновлен в какой-либо группе, этот тестовый пример будет запущен.
- Второй метод помечается только как «связывающая» группа, это означает, что если XML обновляется связующей группой. Только в этом случае этот тест будет выполнен.
- Четвертый контрольный пример помечен для группы strong_ties, что означает, что этот контрольный пример будет выполняться только в том случае, если XML обновлен с именем группы strong_ties.
- Последний, но не менее пятый контрольный пример присоединяется к группе связывания, что означает, что этот тестовый пример будет выполняться только в том случае, если XML обновляется с именем группы связи.
Итак, в целом у нас есть 4 сценария;
- Мы хотим запустить все тестовые случаи независимо от имени группы. В этом случае мы удалим тег Group из запущенного XML.
- Мы хотим запустить несколько тестов, которые относятся только к одной из групп, т.е.
- Пожалуйста, обратитесь:
- В этом видео параметр Group комментируется при запуске XML. Следовательно, вы увидите, что все тесты были выполнены.
- В продолжение видео, теперь мы включили имя группы в XML, вы можете увидеть только те тестовые случаи, которые относятся только к этой группе.
- Мы используем механизм исключения, чтобы исключить контрольный пример:
- Пожалуйста, обратитесь
- Вы видите, что мы использовали исключить несколько тестовых случаев (tc02), написав их имя в запущенном XML. В конечном итоге упомянутые тестовые примеры не выполнялись.
- Наконец, мы используем механизм включения теста для включения тестовых случаев (tc01LaunchURL, tc03EnterCredentials и tc05VerifyHyperlinks)
- Пожалуйста, обратитесь
- В этом видео вы увидите, что тестовые случаи, упомянутые в XML, выполняются только во время выполнения теста.
Пожалуйста, загрузите код с указанного URL, он будет содержать все типы testXML:
Вывод
Мы узнали здесь относительно новый способ запуска тестовых случаев с использованием XML в проекте Maven.
Мы начали с краткого введения в testNG и продолжили с полной технической спецификацией групп, исключая и включая.