Grupy w TestNG
TestNG to platforma testowa obejmujฤ ca rรณลผne typy projektรณw testรณw, takie jak testy jednostkowe, funkcjonalne, kompleksowe, interfejsu uลผytkownika i integracyjne.
Moลผesz uruchomiฤ jeden lub wiele pakietรณw (pakiet oznacza tutaj hermetyzacjฤ grupy klas w odpowiednim formacie dyrektorskim), tworzฤ c XML i uruchamiajฤ c go przez maven.
TestNG Grupy z przykลadem
Uลผywamy grup w Testowanie gdy,
- Nie chcemy definiowaฤ metod testowych osobno w rรณลผnych klasach (w zaleลผnoลci od funkcjonalnoลci) i
- Jednoczeลnie chcฤ zignorowaฤ (nie wykonaฤ) niektรณre przypadki testowe, tak jakby nie istniaลy w kodzie.
- Aby to wykonaฤ, musimy je pogrupowaฤ. Robi siฤ to za pomocฤ mechanizmรณw โincludeโ i โexcludeโ obsลugiwanych w testNG.
W poniลผszym przykลadzie pokazaliลmy skลadniฤ wykorzystania grup w pliku XML.
@Test (groups = { "bonding", "strong_ties" })
Tutaj uลผywamy dwรณch nazw grup, tj. โbondingโ i โstrong_tiesโ (sฤ to logiczne nazwy, ktรณre moลผna zmieniฤ wedลug wลasnego uznania).
<groups> tag definiuje poczฤ
tek grup w formacie XML.
Dostosuj swรณj XML, aby wybraฤ wspomnianฤ grupฤ z klas testowych. Poniลผej omรณwiono skลadniฤ deklarowania grup w pliku XML, np
<groups>
<run>
<include name="bonding" />
</run>
</groups>
Zaลรณลผmy wiฤc, ลผe w klasie jest 10 metod testowych.
z nich,
- 6 metod zostaลo oznaczonych w grupie โwiฤ zanieโ i
- 4 sฤ w grupie โstrong_tiesโ
Idฤ c dalej, ustawimy maven/Java ลcieลผkฤ i uลผyj Eclipse IDE, aby zademonstrowaฤ uลผycie grup przy uลผyciu plikรณw XML w Java oparty na projekcie maven.
Utwรณrz XML dla TestNG z tagami
- Plik XML (Extensible Markup Language) w ลrodowisku Maven zawiera informacje o jednym lub wiฤkszej liczbie testรณw i jest zdefiniowany przez etykietka.
- Informacje testowe w formacie XML sฤ reprezentowane przez etykietka i moลผe zawieraฤ jeden lub wiฤcej TestNG Klasy.
- A Java klasa, ktรณra zawiera @Test adnotacja powyลผej metod badawczych jest zdefiniowana jako TestNG Metody.
Do zbudowania dziaลajฤ cego pliku XML testNG uลผywa siฤ wielu tagรณw w sekwencji , I
- Pierwszy jest tag, ktรณry zawiera logicznฤ nazwฤ definiujฤ cฤ peลne informacje przekazywane testNG w celu wygenerowania raportu wykonania.
- Drugi jestGuru 99 Smoke Test Demoโ>, naleลผy zauwaลผyฤ, ลผe jest to logiczna nazwa zawierajฤ ca informacje o raporcie wykonania testu, takie jak zaliczone, niezaliczone, pominiฤte przypadki testowe i inne informacje, takie jak caลkowity czas wykonania i informacje o grupie
- Trzeci jestcom.group.guru99.TC_Class1โ />, com.group.guru99 to uลผywany pakiet, a nazwa klasy testowej to 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>
Bฤdziemy uลผywaฤ tego kodu XML w nadchodzฤ cym filmie podanym w poniลผszych sekcjach.
โwykluczโ lub โwลฤ czโ w testowym formacie XML
Zaลรณลผmy, ลผe uwaลผasz, ลผe uลผycie mechanizmu grupy jest skomplikowane. W takim przypadku XML testNG udostฤpnia funkcjonalnoลฤ wykluczania/doลฤ czania testu.
Exclude Tag: Syntax for exclude tag <exclude name="${TEST_CASE_NAME}" />
Include Tag: Syntax for include tag <include name="${TEST_CASE_NAME}" />
Uwaga: Moลผemy wลฤ czyฤ/wyลฤ czyฤ wiele przypadkรณw testowych jednoczeลnie, co dziaลa rรณwnieลผ w przypadku Grup.
Uruchom TestNG Grupuj, doลฤ czaj, wykluczaj kod (pokaz wideo)
Wyjaลnienie dotyczฤ ce Java Code i XML z grupuj, wykluczaj i wลฤ czaj znacznik w formacie XML.
Scenariusz testowy: Uruchomiฤ Guru99 demo witryny bankowej, po czym zweryfikuj kilka rzeczy na stronie logowania, wprowadลบ dane logowania i ponownie zweryfikuj kilka nowych rzeczy w aplikacji po zalogowaniu.
Uwaga: Kaลผdy kodowany krok powinien byฤ zadeklarowany w oddzielnych metodach, ale po wykonaniu wykona metody testowe w zaleลผnoลci od wpisรณw w pliku XML.
- Metoda 1: Zainicjuj przeglฤ darkฤ i uruchom adres URL (tc01LaunchURL())
- Metoda 2: Sprawdลบ nagลรณwek strony logowania (tc02VerifyLaunchPage())
- Metoda 3: Wprowadลบ nazwฤ uลผytkownika i hasลo w formularzu logowania (tc03EnterCredentials())
- Metoda 4: Sprawdลบ obecnoลฤ identyfikatora menedลผera na panelu uลผytkownika (tc04VerifyLoggedInPage())
- Metoda 5: Sprawdลบ jeszcze kilka linkรณw na panelu uลผytkownika (tc05VerifyHyperlinks())
Code dla naszego scenariusza:
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("https://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");
}
}
Uwaga: dane uwierzytelniajฤ ce sฤ waลผne tylko przez 20 dni, wiฤc jeลli sprรณbujesz uruchomiฤ kod na komputerze lokalnym, moลผe wystฤ piฤ bลฤ d nieprawidลowych danych uwierzytelniajฤ cych.
Wyjaลnienie Code:
Jak wspomniano powyลผej, stworzyliลmy 5 przypadkรณw testowych do wykonania kaลผdej akcji niezaleลผnymi metodami.
Dla kaลผdej metody powiฤ zaliลmy parametr grupowy z pewnฤ wartoลciฤ .
Zasadniczo sฤ to nazwy grup rรณลผnicujฤ cych, tj. โsilne wiฤziโ i โwiฤziโ.
- Pierwsza i trzecia metoda sฤ oznaczone jako โwiฤ zanieโ, โsilne_wiฤziโ, co oznacza, ลผe โโjeลli XML zostanie zaktualizowany w dowolnej grupie, to Przypadek testowy bฤdzie dziaลaฤ.
- Druga metoda jest oznaczona tylko do grupy โpowiฤ zaniaโ, co oznacza, ลผe โโjeลli XML zostanie zaktualizowany o grupฤ powiฤ zania. Tylko w takim przypadku ten przypadek testowy zostanie uruchomiony.
- Czwarty przypadek testowy jest oznaczony jako naleลผฤ cy do grupy strong_ties, co oznacza, ลผe โโten przypadek testowy zostanie uruchomiony tylko wtedy, gdy plik XML zostanie zaktualizowany o nazwฤ grupy strong_ties.
- Ostatni, ale nie najmniej waลผny, piฤ ty przypadek testowy jest doลฤ czony do grupy wiฤ zania, co oznacza, ลผe โโten przypadek testowy zostanie uruchomiony tylko wtedy, gdy XML zostanie zaktualizowany o nazwฤ grupy ลฤ czenia.
Ogรณlnie rzecz biorฤ c, mamy 4 scenariusze;
Scenariusz 1: Chcemy uruchomiฤ wszystkie przypadki testowe niezaleลผnie od nazwy grupy. W takim przypadku usuniemy tag Group z dziaลajฤ cego XML-a.
Scenariusz 2: Chcemy uruchomiฤ kilka testรณw, ktรณre sฤ zwiฤ zane tylko z jednฤ z grup, tj. strong_ties lub bonding. Zapoznaj siฤ z:
- W tym filmie parametr Group jest komentowany na podstawie dziaลajฤ cego kodu XML. W zwiฤ zku z tym zobaczysz, ลผe wszystkie przypadki testowe zostaลy wykonane.
- W kontynuacji filmu, teraz umieลciliลmy nazwฤ grupy w formacie XML, moลผesz zobaczyฤ, ลผe dziaลajฤ tylko przypadki testowe specyficzne dla tej grupy.
Scenariusz 3: Uลผywamy mechanizmu Exclude, aby wykluczyฤ przypadek testowy. Proszฤ zapoznaฤ siฤ z filmem
- Widzisz, ลผe uลผyliลmy wykluczenia kilku przypadkรณw testowych (tc02), zapisujฤ c ich nazwy w dziaลajฤ cym formacie XML. W efekcie koลcowym wspomniane przypadki testowe nie zostaลy uruchomione.
Scenariusz 4: Na koniec uลผywamy mechanizmu testรณw doลฤ czania, aby uwzglฤdniฤ przypadki testowe (tc01LaunchURL, tc03EnterCredentials i tc05VerifyHyperlinks). Proszฤ zapoznaฤ siฤ z filmem
W tym filmie zobaczysz, ลผe przypadki testowe wymienione w formacie XML dziaลajฤ tylko podczas wykonywania testu.
Proszฤ pobraฤ kod z kodu dla powyลผszego przykลadu-
Wniosek
Poznaliลmy tutaj stosunkowo nowy sposรณb uruchamiania przypadkรณw testowych przy uลผyciu XML w projekcie Maven.
Na poczฤ tek przedstawiliลmy krรณtkie wprowadzenie do testNG, a nastฤpnie przedstawiliลmy peลnฤ specyfikacjฤ technicznฤ grup, wykluczania i uwzglฤdniania.

