Групи Testng – включити та виключити (приклад)

TestNG це платформа для тестування, яка охоплює різні типи дизайну тестів, як одиничні, функціональні, наскрізні, інтерфейс і інтеграційні тести.

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

TestNG Групи з прикладом

Ми використовуємо групи в Testng коли,

  • Ми не хочемо визначати методи тестування окремо в різних класах (залежно від функціональності) і
  • У той же час хочеться ігнорувати (не виконувати) деякі тестові випадки, ніби вони не існують у коді.
  • Отже, щоб виконати це, ми повинні згрупувати їх. Це робиться за допомогою механізмів «включення» та «виключення», які підтримуються в 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 знаходяться в групі “сильні зв’язки”.

Рухаючись далі, ми збираємося встановити 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}" />

Примітка: Ми можемо включати/виключати кілька тестів за один раз, що також працює з групами.

прогін TestNG Групувати, включати, виключати код (демонстрація відео)

Пояснення Java Код і XML з згрупувати, виключити та включити тег у XML.

Сценарій тесту: запустіть демо-банківський сайт Guru99, після цього перевірте кілька речей на сторінці входу, введіть облікові дані та повторно перевірте кілька нових речей у програмі, коли ви ввійшли.

прогін 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: Ми хочемо запустити всі тестові випадки, незалежно від назви групи. У цьому випадку ми видалимо тег Group із запуску XML.

Сценарій 2: Ми хочемо запустити кілька тестів, пов’язаних лише з будь-якою з груп, тобто сильні зв’язки чи зв’язок. Будь ласка, зверніться до:

  • У цьому відео параметр групи коментується під час запуску XML. Отже, ви побачите, що всі тестові випадки виконано.
  • У продовження відео, тепер ми включили ім’я групи в XML, ви можете бачити лише тестові випадки, які стосуються цієї групи.

Сценарій 3: Ми використовуємо механізм виключення, щоб виключити тестовий приклад. Перегляньте відео

  • Ви бачите, що ми використали виключити декілька тестів (tc02), записавши їх ім’я у запущеному XML. У кінцевому результаті згадані тестові випадки не запускалися.

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

У цьому відео ви побачите, що тестові випадки, згадані в XML, виконуються лише під час виконання тесту.

Будь ласка, завантажте код із коду для прикладу вище-

Завантажте наведений вище код

Висновок

Тут ми навчилися відносно нового способу запуску тестів за допомогою XML у проекті Maven.

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