Группы Testng – включить и исключить (пример)

TestNG — это среда тестирования, которая охватывает различные типы тестовых проектов, такие как модульные, функциональные, сквозные, пользовательские и интеграционные тесты.

Вы можете запускать один или несколько пакетов (здесь пакет означает инкапсуляцию группы классов в соответствующем формате директора), создав XML и запустив его через maven.

TestNG Группы с примером

Мы используем группы в TestNG когда,

  • Мы не хотим определять методы тестирования отдельно в разных классах (в зависимости от функциональности) и
  • В то же время хочется игнорировать (не выполнять) некоторые тестовые примеры, как будто их нет в коде.
  • Итак, чтобы выполнить это, нам нужно сгруппировать их. Это делается с помощью механизмов «include» и «exclude», поддерживаемых в testNG.

В приведенном ниже примере мы показали синтаксис использования групп в XML-файле.

@Test (groups = { "bonding", "strong_ties" })

Здесь мы используем имена двух групп, а именно «bonding» и «strong_ties» (это логические имена, которые можно изменить по вашему желанию).

<groups> тег определяет начало групп в XML.

Настройте свой XML, чтобы выбрать указанную группу из тестовых классов. Ниже упомянут синтаксис объявления групп в файле XML, например

 <groups>		
   <run>		
    <include name="bonding" />		
   </run>		
  </groups>		

Итак, предположим, что в классе 10 тестовых методов.

Из них,

  • 6 методов помечены в группе «связывание» и
  • 4 человека в группе «strong_ties»

Двигаясь дальше, мы собираемся установить maven/Java путь и используйте Eclipse IDE для демонстрации использования групп с использованием XML-файлов в Java основанный на Maven проект.

Создать XML для TestNG с тэгами

  • Файл XML (расширяемый язык разметки) в среде Maven содержит информацию об одном или нескольких тестах и ​​определяется ярлык.
  • Тестовая информация в XML представлена ярлык и может содержать один или несколько TestNG классов.
  • A Java класс, который содержит @Контрольная работа аннотация выше методов испытаний определяется как TestNG методы.

Несколько тегов используются последовательно для создания рабочего XML-файла testNG, например , и

  • Во-первых, это тег, который содержит логическое имя, определяющее полную информацию, передаваемую testNG для создания отчета о выполнении.
  • Во-вторых, это , обратите внимание, что это логическое имя, которое содержит информацию отчета о выполнении теста, такую ​​​​как прохождение, сбой, пропуск тестовых случаев, а также другую информацию, такую ​​​​как общее время выполнения и информацию о группе.
  • В-третьих,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}" />

Примечание: Мы можем включать/исключать несколько тестовых случаев одновременно, что также работает с группами.

Run TestNG Группировать, включать, исключать код (демо-видео)

Объяснение Java Код и XML с группировать, исключать и включать тег в XML.

Сценарий тестирования: Запустите демонстрационный банковский сайт Guru99, после этого проверьте несколько вещей на странице входа в систему, введите учетные данные и повторно проверьте несколько новых вещей в приложении при входе в систему.

Run TestNG Группировать, включать, исключать код

Примечание: Каждый шаг, который вы кодируете, должен быть объявлен в отдельных методах, но при выполнении он будет выполнять тестовые методы в зависимости от записей в 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 дней, поэтому, если вы попытаетесь запустить код на своем локальном компьютере, вы можете столкнуться с ошибкой неверных учетных данных.

Объяснение кода:

Как упоминалось выше, мы создали 5 тест-кейсов для выполнения каждого действия в независимых методах.

Для каждого метода мы связали групповой параметр с некоторым значением.

По сути, это названия дифференцирующих групп, то есть «сильные связи» и «связь».

  • Первый и третий методы помечены тегами «bonding», «strong_ties», что означает, что если XML обновляется в какой-либо группе, это Тестовый кейс будет работать.
  • Второй метод помечен только для группы «связывание», это означает, что если XML обновляется с помощью группы связывания. Только в этом случае этот тестовый пример будет запущен.
  • Четвертый тестовый пример помечен как группа Strong_ties, что означает, что этот тестовый пример будет выполняться только в том случае, если XML будет обновлен именем группы Strong_ties.
  • Последний, но не менее пятый тестовый пример прикреплен к группе связывания, что означает, что этот тестовый пример будет выполняться только в том случае, если XML будет обновлен именем группы связывания.

Итак, в целом у нас есть 4 сценария;

Сценарий 1: Мы хотим запустить все тестовые случаи независимо от имени группы. В этом случае мы удалим тег группы из запуска XML.

Сценарий 2: Мы хотим запустить несколько тестов, которые относятся только к любой из групп, например, Strong_ties или Bonding. Пожалуйста, обратитесь:

  • В этом видео параметр Group комментируется при запуске XML. Следовательно, вы увидите, что все тестовые примеры были выполнены.
  • В продолжение видео: теперь мы включили имя группы в XML, и вы можете видеть, что выполняются только тестовые примеры, специфичные для этой группы.

Сценарий 3: Мы используем механизм Exclude, чтобы исключить тестовый пример. Пожалуйста, обратитесь к видео

  • Вы видите, что мы использовали исключение нескольких тестовых примеров (tc02), записывая их имена в исполняемый XML. В конечном результате упомянутые тестовые примеры не выполнялись.

Сценарий 4: Наконец, мы используем механизм включения тестов для включения тестовых случаев (tc01LaunchURL, tc03EnterCredentials и tc05VerifyHyperlinks). Пожалуйста, обратитесь к видео

В этом видео вы увидите, что тестовые примеры, упомянутые в XML, выполняются только во время выполнения теста.

Загрузите код из кода для приведенного выше примера:

Загрузите приведенный выше код

Заключение

Здесь мы узнали об относительно новом способе запуска тестовых примеров с использованием XML в проекте Maven.

Мы начали с краткого введения в testNG и продолжили полной технической спецификацией групп, исключений и включений.