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 и продолжили с полной технической спецификацией групп, исключая и включая.
