Skupiny v TestNG
TestNG je testovacรญ rรกmec, kterรฝ pokrรฝvรก rลฏznรฉ typy nรกvrhลฏ testลฏ, jako jsou jednotkovรฉ, funkฤnรญ, end-to-end, UI a integraฤnรญ testy.
Mลฏลพete spustit jeden nebo vรญce balรญฤkลฏ (balรญฤek zde znamenรก zapouzdลit skupinu tลรญd ve sprรกvnรฉm formรกtu adresรกลe) vytvoลenรญm XML a jeho spuลกtฤnรญm pลes maven.
TestNG Skupiny s pลรญkladem
Pouลพรญvรกme skupiny v Testng kdyลพ,
- Nechceme definovat testovacรญ metody oddฤlenฤ v rลฏznรฝch tลรญdรกch (v zรกvislosti na funkฤnosti) a
- Zรกroveล chcete ignorovat (nespouลกtฤt) nฤkterรฉ testovacรญ pลรญpady, jako by v kรณdu neexistovaly.
- Abychom to mohli provรฉst, musรญme je seskupit. To se provรกdรญ pomocรญ mechanismลฏ โzahrnoutโ a โvylouฤitโ podporovanรฉ v testNG.
V pลรญkladu nรญลพe jsme ukรกzali syntaxi pouลพitรญ skupin v souboru XML.
@Test (groups = { "bonding", "strong_ties" })
Zde pouลพรญvรกme 2 nรกzvy skupin, tj. โbondingโ a โstrong_tiesโ (toto jsou logickรก jmรฉna, kterรก lze podle vaลกeho pลรกnรญ zmฤnit).
<groups> tag definuje zaฤรกtek skupin v XML.
Pลizpลฏsobte si XML tak, abyste si vybrali zmรญnฤnou skupinu z testovacรญch tลรญd. Nรญลพe je uvedena syntaxe, jak deklarovat skupiny v souboru XML, napล
<groups>
<run>
<include name="bonding" />
</run>
</groups>
Pลedpoklรกdejme tedy, ลพe ve tลรญdฤ je 10 testovacรญch metod.
z nich,
- 6 metod je oznaฤeno ve skupinฤ โbondingโ a
- 4 jsou ve skupinฤ โstrong_tiesโ.
Vpลed, nastavรญme maven/Java cestu a pouลพijte Eclipse IDE k demonstraci pouลพitรญ skupin pomocรญ souborลฏ XML v Java zaloลพenรฝ maven projekt.
Vytvoลit XML pro TestNG se znaฤkami
- Soubor XML (Extensible Markup Language) v rรกmci Maven obsahuje informace o jednom nebo vรญce testech a je definovรกn ลกtรญtek.
- Testovacรญ informace v XML jsou reprezentovรกny ลกtรญtek a mลฏลพe obsahovat jeden nebo vรญce TestNG tลรญdy.
- A Java tลรญda, kterรก obsahuje @Test anotace vรฝลกe testovacรญ metody je definovรกna jako TestNG metody.
Vรญce znaฤek se pouลพรญvรก v sekvenci k vytvoลenรญ funkฤnรญho xml testNG , a
- Prvnรญ je tag, kterรฝ obsahuje logickรฝ nรกzev, kterรฝ definuje รบplnรฉ informace pro testNG hlรกลกenรฉ za รบฤelem vygenerovรกnรญ zprรกvy o provedenรญ.
- Druhรฝ jeGuru โ99 Demo kouลovรฉho testuโ>, vลกimnฤte si, ลพe se jednรก o logickรฝ nรกzev, kterรฝ obsahuje informace o provedenรญ testu, jako je รบspฤลกnรฝ, neรบspฤลกnรฝ, pลeskoฤenรฉ testovacรญ pลรญpady a dalลกรญ informace, jako je celkovรฝ ฤas provedenรญ a informace o skupinฤ
- Tลetรญ jecom.group.guru99.TC_Class1โ />, com.group.guru99 je pouลพitรฝ balรญฤek a nรกzev testovacรญ tลรญdy je 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>
Tento XML budeme pouลพรญvat pro nadchรกzejรญcรญ video uvedenรฉ v sekcรญch nรญลพe.
โexcludeโ nebo โincludeโ v testovacรญm XML
Pลedpoklรกdejme, ลพe zjistรญte, ลพe pouลพitรญ mechanismu skupiny je sloลพitรฉ, pak testNG XML usnadลuje funkci vylouฤenรญ/zahrnutรญ testu.
Exclude Tag: Syntax for exclude tag <exclude name="${TEST_CASE_NAME}" />
Include Tag: Syntax for include tag <include name="${TEST_CASE_NAME}" />
Poznรกmka: Mลฏลพeme zahrnout/vylouฤit vรญce testovacรญch pลรญpadลฏ najednou, coลพ funguje i se skupinami.
Bฤh TestNG Seskupit, zahrnout, vylouฤit kรณd (video ukรกzka)
Vysvฤtlenรญ Java Code a XML s seskupit, vylouฤit a zahrnout znaฤku v XML.
Scรฉnรกล testu: Zahรกjenรญ Guru99 demo bankovnรญch strรกnek, potรฉ ovฤลte nฤkolik vฤcรญ na pลihlaลกovacรญ strรกnce, zadejte pลihlaลกovacรญ รบdaje a po pลihlรกลกenรญ znovu ovฤลte nฤkolik novรฝch vฤcรญ v aplikaci.
Poznรกmka: Kaลพdรฝ krok, kterรฝ kรณdujete, by mฤl bรฝt deklarovรกn v samostatnรฝch metodรกch, ale po provedenรญ provede testovacรญ metody v zรกvislosti na poloลพkรกch v souboru XML.
- Metoda 1: Inicializujte prohlรญลพeฤ a spusลฅte URL (tc01LaunchURL())
- Metoda 2: Ovฤลte zรกhlavรญ pลihlaลกovacรญ strรกnky (tc02VerifyLaunchPage())
- Metoda 3: Zadejte uลพivatelskรฉ jmรฉno a heslo do pลihlaลกovacรญho formulรกลe (tc03EnterCredentials())
- Metoda 4: Ovฤลte pลรญtomnost ID sprรกvce na uลพivatelskรฉm panelu (tc04VerifyLoggedInPage())
- Metoda 5: Ovฤลte nฤkolik dalลกรญch odkazลฏ na User DashBoard (tc05VerifyHyperlinks())
Code pro nรกลก scรฉnรกล:
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");
}
}
Poznรกmka: Pลihlaลกovacรญ รบdaje jsou platnรฉ pouze 20 dnรญ, takลพe pokud se pokusรญte spustit kรณd na mรญstnรญm poฤรญtaฤi, mลฏลพete ฤelit chybฤ neplatnรฝch pลihlaลกovacรญch รบdajลฏ.
Vysvฤtlenรญ Code:
Jak bylo uvedeno vรฝลกe, vytvoลili jsme 5 testovacรญch pลรญpadลฏ pro provedenรญ kaลพdรฉ akce nezรกvislรฝmi metodami.
Pro kaลพdou metodu jsme pลiลadili parametr skupiny s nฤjakou hodnotou.
V zรกsadฤ se jednรก o nรกzvy rozliลกujรญcรญch skupin, tj. โsilnรฉ vazbyโ a โspojenรญโ.
- Prvnรญ a tลetรญ metoda jsou oznaฤeny jako โbondingโ, โstrong_tiesโ, coลพ znamenรก, ลพe pokud je XML aktualizovรกno v kterรฉkoli skupinฤ, Testovacรญ pลรญpad pobฤลพรญ.
- Druhรก metoda je oznaฤena pouze skupinou โbondingโ, znamenรก to, ลพe pokud je XML aktualizovรกno skupinou bonding. Pouze v takovรฉm pลรญpadฤ se spustรญ tento testovacรญ pลรญpad.
- ฤtvrtรฝ testovacรญ pลรญpad je oznaฤen jako skupina strong_ties, coลพ znamenรก, ลพe tento testovacรญ pลรญpad bude spuลกtฤn pouze v pลรญpadฤ, ลพe je XML aktualizovรกno nรกzvem skupiny strong_ties.
- Poslednรญ, ale ne nejmรฉnฤ pรกtรฝ testovacรญ pลรญpad je pลipojen k bonding group, coลพ znamenรก, ลพe tento testovacรญ pลรญpad bude spuลกtฤn pouze v pลรญpadฤ, ลพe je XML aktualizovรกno nรกzvem bonding group.
Celkovฤ tedy mรกme 4 scรฉnรกลe;
Scรฉnรกล 1: Chceme spustit vลกechny testovacรญ pลรญpady bez ohledu na nรกzev skupiny. V tomto pลรญpadฤ odstranรญme znaฤku Group ze spuลกtฤnรฉho XML.
Scรฉnรกล 2: Chceme provรฉst nฤkolik testลฏ, kterรฉ se tรฝkajรญ pouze jednรฉ ze skupin, tj. strong_ties nebo bonding. Viz:
- V tomto videu je parametr Group komentovรกn ze spuลกtฤnรฉho XML. Uvidรญte tedy, ลพe vลกechny testovacรญ pลรญpady byly provedeny.
- V pokraฤovรกnรญ videa, nynรญ jsme zahrnuli nรกzev skupiny do XML, mลฏลพete vidฤt pouze bฤลพรญcรญ testovacรญ pลรญpady specifickรฉ pro tuto skupinu.
Scรฉnรกล 3: K vylouฤenรญ testovacรญho pลรญpadu pouลพรญvรกme mechanismus Exclude. Podรญvejte se prosรญm na video
- Vidรญte, ลพe jsme pouลพili vylouฤit nฤkolik testovacรญch pลรญpadลฏ (tc02) zapsรกnรญm jejich nรกzvu do bฤลพรญcรญho XML. V koneฤnรฉm vรฝsledku uvedenรฉ testovacรญ pลรญpady neprobฤhly.
Scรฉnรกล 4: Nakonec pouลพรญvรกme testovacรญ mechanismus zahrnutรญ k zahrnutรญ testovacรญch pลรญpadลฏ (tc01LaunchURL, tc03EnterCredentials a tc05VerifyHyperlinks). Podรญvejte se prosรญm na video
V tomto videu uvidรญte, ลพe testovacรญ pลรญpady, kterรฉ jsou uvedeny v XML, bฤลพรญ pouze bฤhem provรกdฤnรญ testu.
Stรกhnฤte si kรณd z kรณdu pro vรฝลกe uvedenรฝ pลรญklad -
Stรกhnฤte si vรฝลกe uvedenรฝ soubor Code
Zรกvฤr
Nauฤili jsme se zde relativnฤ novรฝ zpลฏsob spouลกtฤnรญ testovacรญch pลรญpadลฏ pomocรญ XML v projektu Maven.
Zaฤali jsme krรกtkรฝm รบvodem do testNG a pokraฤovali รบplnou technickou specifikacรญ skupin, vylouฤenรญ a zahrnutรญ.

