Skupiny v TestNG
โก Chytrรฉ shrnutรญ
Skupiny v TestNG Umoลพลuje oznaฤit testovacรญ metody logickรฝmi popisky a potรฉ je zahrnout nebo vylouฤit pomocรญ sady XML. Tento pลรญstup zjednoduลกuje bฤhy ลรญzenรฉ kouลovรฝmi testy, regresรญ a zรกvislostmi bez nutnosti pลepisovรกnรญ. Java kรณd.
TestNG je testovacรญ framework, kterรฝ zahrnuje jednotkovรฉ, funkฤnรญ, end-to-end, UI a integraฤnรญ testy pro Java projektลฏ.
Mลฏลพete spustit jeden balรญฤek nebo vรญce balรญฤkลฏ (balรญฤek zapouzdลuje souvisejรญcรญ tลรญdy v definovanรฉm rozvrลพenรญ adresรกลลฏ) vytvoลenรญm sady XML a jejรญm spuลกtฤnรญm pomocรญ Mavenu.
TestNG Skupiny s pลรญkladem
Pouลพรญvรกte skupiny v TestNG kdy:
- Nechcete rozptรฝlit testovacรญ metody do mnoha tลรญd ฤistฤ podle funkฤnรญ oblasti a
- Chcete pลeskoฤit (nespustit) vybranรฉ testovacรญ pลรญpady, jako by v kรณdovรฉ zรกkladnฤ chybฤly.
- Abyste dosรกhli obou cรญlลฏ, seskupรญte metody do logickรฝch skupin. TestNG pak respektuje filtry โzahrnoutโ a โvylouฤitโ deklarovanรฉ v sadฤ XML.
Nรกsledujรญcรญ รบryvek ukazuje syntaxi skupinovรฉho oznaฤovรกnรญ pouลพitou v testovacรญ metodฤ.
Zde se pouลพรญvajรญ dva nรกzvy skupin, a to bonding a strong_tiesToto jsou logickรฉ popisky, kterรฉ mลฏลพete pลejmenovat tak, aby vyhovovaly vaลกemu projektu.
Jedno <groups> Znaฤka oznaฤuje zaฤรกtek skupinovรฝch filtrลฏ v rรกmci sady XML.
Pak upravรญte XML tak, aby vybral zvolenou skupinu z oznaฤenรฝch tลรญd. Nรกsledujรญcรญ pลรญklad ukazuje syntaxi deklarace skupiny.
<bฤh>
<obsahovat nรกzev=โspojenรญโ />
</bฤh>
</skupiny>
Pลedpoklรกdejme, ลพe jedna tลรญda obsahuje 10 testovacรญch metod.
Z tฤchto metod:
- 6 metody nesou
bondingskupina a - 4 metody nesou
strong_tiesskupina.
Dรกle nastavรญte Maven a Java cesty a pouลพijte Eclipse IDE pro demonstraci pouลพitรญ ve skupinรกch pomocรญ XML souborลฏ uvnitล Javaprojekt zaloลพenรฝ na Mavenu.
Vytvoลit XML pro TestNG se znaฤkami
- Soubor XML (Extensible Markup Language) v Maven frameworku uklรกdรก konfiguraci pro jeden nebo vรญce testลฏ deklarovanรฝch uvnitล ลกtรญtek.
- Kaลพdรฝ testovacรญ zรกznam je zabalen v ลกtรญtek a mลฏลพe pojmout jeden nebo vรญce TestNG tลรญdy.
- A Java tลรญda s jednรญm nebo vรญce @Test anotace k jeho metodรกm se povaลพujรญ za TestNG tลรญda.
Vรญce znaฤek se postupnฤ zobrazuje pro vytvoลenรญ funkฤnรญho souboru testng.xml, konkrรฉtnฤ , a .
- Jedno tag obsahuje nรกzev na รบrovni sady pouลพitรฝ v TestNG zprรกvy pro souhrny provedenรญ.
- Jedno <test name=โGuru 99 Demo kouลovรฉho testuโ> Tag obsahuje logickรฝ nรกzev testu; sestava jej pouลพรญvรก pro poฤet รบspฤลกnรฝch, neรบspฤลกnรฝch a pลeskoฤenรฝch testลฏ a takรฉ pro celkovรฝ ฤas provedenรญ a metadata skupiny.
- Jedno tag odkazuje na testovacรญ tลรญdu, kde
com.group.guru99je balรญฤek aTC_Class1je nรกzev tลรญdy.
<!DOCTYPE souprava SYSTรM โhttp://testng.org/testng-1.0.dtdโ>
<souprava nรกzev=โApartmรกโ>
<test nรกzev="Guru 99 Demo kouลovรฉho testu>
<skupiny>
<bฤh>
<obsahovat nรกzev=โsilnรฉ vazbyโ />
</bฤh>
</skupiny>
<tลรญdy>
<tลรญda nรกzev=โcom.group.guru99.TC_Class1โ />
</tลรญdy>
</test>
</souprava>
Tato konfigurace XML je zmรญnฤna ve video nรกvodech v nรกsledujรญcรญch ฤรกstech.
โexcludeโ nebo โincludeโ v testovacรญm XML
Pokud se vรกm mechanismus seskupovรกnรญ zdรก pro malรฝ filtr pลรญliลก nรกroฤnรฝ, sada testng.xml vรกm takรฉ umoลพลuje vylouฤit nebo zahrnout jednotlivรฉ testovacรญ metody podle nรกzvu.
Zahrnout znaฤkuSyntaxe pro tag includeobsahovat nรกzev=โ${TEST_CASE_NAME}โ />
Poznรกmka: V jednom bฤhu mลฏลพete zahrnout nebo vylouฤit mnoho testovacรญch pลรญpadลฏ a stejnรก syntaxe platรญ pro skupinovรฉ filtry.
Pouลพitรญ dependsOnGroups pro uspoลรกdanรฉ spuลกtฤnรญ
Kromฤ pouhรฉho zaฤlenฤnรญ, TestNG umoลพลuje jednรฉ skupinฤ zรกviset na druhรฉ pomocรญ dependsOnGroups atribut. Bฤลพec zajiลกลฅuje, ลพe kaลพdรก metoda v nadลazenรฉ skupinฤ skonฤรญ pลed spuลกtฤnรญm jakรฉkoli zรกvislรฉ metody, coลพ zachovรกvรก spolehlivost pลedbฤลพnรฝch podmรญnek.
- Nejprve se pลihlaste, pak transakce: Oznaฤte metody pลihlรกลกenรญ pomocรญ
group = "auth"a testy pลenosu znaฤek sdependsOnGroups = {"auth"}Testy pลenosu se spustรญ aลพ po รบspฤลกnรฉm pลihlรกลกenรญ. - Pลeskoฤit pลi selhรกnรญ: Pokud metoda v nadลazenรฉ skupinฤ selลพe, TestNG Oznaฤรญ zรกvislรฉ metody jako pลeskoฤenรฉ, mรญsto aby selhaly, coลพ zachovรกvรก poctivost reportลฏ.
- Kombinujte s alwaysRun: Mฤly by bรฝt stanoveny metody ฤiลกtฤnรญ
alwaysRun = truetakลพe demontรกลพ probรญhรก i v pลรญpadฤ selhรกnรญ nadลazenรฉ skupiny.
Tento vzorec je bฤลพnรฝ pro komplexnรญ sady, kde musรญ bรฝt nastavenรญ API dokonฤeno pลed spuลกtฤnรญm asercรญ uลพivatelskรฉho rozhranรญ.
Bฤh TestNG Seskupit, zahrnout, vylouฤit kรณd (video ukรกzka)
Nรญลพe je uveden nรกvod, jak Java kรณd a sada XML, kterรฉ ลรญdรญ seskupit, vylouฤit a zahrnout chovรกnรญ.
Scรฉnรกล testu: Spustit Guru99 demo bankovnรญch strรกnek, ovฤลte nฤkolik prvkลฏ na pลihlaลกovacรญ strรกnce, zadejte pลihlaลกovacรญ รบdaje a po pลihlรกลกenรญ znovu ovฤลte nฤkolik poloลพek na ลรญdicรญm panelu.
Poznรกmka: Kaลพdรฝ krok je veden ve vlastnรญ metodฤ, ale za bฤhu zรกvisรญ poลadรญ na poloลพkรกch v sadฤ XML.
- Metoda 1: Inicializujte prohlรญลพeฤ a spusลฅte jej 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 manaลพera na uลพivatelskรฉm panelu (
tc04VerifyLoggedInPage()). - Metoda 5: Ovฤลte dalลกรญ odkazy na uลพivatelskรฉm panelu (
tc05VerifyHyperlinks()).
Code pro scรฉnรกล:
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.Firefoxลidiฤi;
import org.testng.Assert;
import org.testng.annotations.Test;
veลejnรก tลรญda TC_Tลรญda1 {
veลejnรฉ statickรฉ finรกlnรญ webovรฝ ovladaฤ webOvladaฤ = novรฝ Firefoxลidiฤ();
ลetฤzec launchPageHeads = โ//h3[text()='โGuru99 Bank]โ;
Pลeฤtฤte si prosรญm peฤlivฤ tento dokument, abyste pochopili naลกe zรกsady a postupy tรฝkajรญcรญ se vaลกich รบdajลฏ a toho, jak s nimi budeme naklรกdat. Pokud s naลกimi zรกsadami a postupy nesouhlasรญte, mรกte moลพnost nepouลพรญvat naลกe strรกnky. Pลรญstupem na strรกnky nebo jejich pouลพรญvรกnรญm souhlasรญte s tฤmito Zรกsadami ochrany osobnรญch รบdajลฏ. ลetฤzec element_uลพivatelskรฉho_jmรฉna = โ//input[@name='uid']โ, element_hesla = โ//vstup[@jmรฉno='heslo']โ,
signIn_element = โ//vstup[@name='tnLogin']โ;
Pลeฤtฤte si prosรญm peฤlivฤ tento dokument, abyste pochopili naลกe zรกsady a postupy tรฝkajรญcรญ se vaลกich รบdajลฏ a toho, jak s nimi budeme naklรกdat. Pokud s naลกimi zรกsadami a postupy nesouhlasรญte, mรกte moลพnost nepouลพรญvat naลกe strรกnky. Pลรญstupem na strรกnky nebo jejich pouลพรญvรกnรญm souhlasรญte s tฤmito Zรกsadami ochrany osobnรญch รบdajลฏ. ลetฤzec hodnota_uลพivatelskรฉho_jmรฉna = โmngr28642โ, hodnota_hesla = โydAnรกtโ;
Pลeฤtฤte si prosรญm peฤlivฤ tento dokument, abyste pochopili naลกe zรกsady a postupy tรฝkajรญcรญ se vaลกich รบdajลฏ a toho, jak s nimi budeme naklรกdat. Pokud s naลกimi zรกsadami a postupy nesouhlasรญte, mรกte moลพnost nepouลพรญvat naลกe strรกnky. Pลรญstupem na strรกnky nebo jejich pouลพรญvรกnรญm souhlasรญte s tฤmito Zรกsadami ochrany osobnรญch รบdajลฏ. ลetฤzec ID manaลพera = โ//td[obsahuje(text(),'ID sprรกvce')]โ;
Pลeฤtฤte si prosรญm peฤlivฤ tento dokument, abyste pochopili naลกe zรกsady a postupy tรฝkajรญcรญ se vaลกich รบdajลฏ a toho, jak s nimi budeme naklรกdat. Pokud s naลกimi zรกsadami a postupy nesouhlasรญte, mรกte moลพnost nepouลพรญvat naลกe strรกnky. Pลรญstupem na strรกnky nebo jejich pouลพรญvรกnรญm souhlasรญte s tฤmito Zรกsadami ochrany osobnรญch รบdajลฏ. ลetฤzec novรฝZรกkaznรญk = โ//a[@href='addcustomerpage.php']โ, Pลevod finanฤnรญch prostลedkลฏ = โ//a[@href='FundTransInput.php']โ;
/** Tento testovacรญ pลรญpad inicializuje webDriver */
@Test(skupiny = { โspojenรญโ, โsilnรฉ vazbyโ })
veลejnรก prรกzdnota tc01LaunchURL() {
webDriver.manage().window().maximize();
webDriver.manage().timeouts().implicitlyWait(20, ฤasovรกJednotka.SEKUNDY);
webDriver.get(โhttps://www.demo.guru99.com/V4/โ);
}
/** Kontroluje pลรญtomnost zรกhlavรญ na pลihlaลกovacรญ strรกnce */
@Test(skupiny = { โspojenรญโ })
veลejnรก prรกzdnota tc02OvฤลitSpouลกtฤcรญPage() {
Assert.assertTrue(webDriver.findElement(By.xpath(launchPageHeading)).isDisplayed(),
โZรกhlavรญ domovskรฉ strรกnky se nezobrazujeโ);
System.out.println(โZobrazuje se zรกhlavรญ domovskรฉ strรกnkyโ);
}
/** Zadรก uลพivatelskรฉ jmรฉno, heslo a potรฉ klikne na tlaฤรญtko Pลihlรกsit se */
@Test(skupiny = { โspojenรญโ, โsilnรฉ vazbyโ })
veลejnรก prรกzdnota tc03ZadatPลihlaลกovacรญZnaฤky() {
webDriver.findElement(By.xpath(prvek_uลพivatelskรฉho_jmรฉna)).sendKeys(hodnota_uลพivatelskรฉho_jmรฉna);
webDriver.findElement(By.xpath(element_hesla)).sendKeys(hodnota_hesla);
webDriver.findElement(By.xpath(signIn_element)).click();
}
/** Ovฤลuje ID manaลพera na ลรญdicรญm panelu */
@Test(skupiny = { โsilnรฉ vazbyโ })
veลejnรก prรกzdnota tc04OvฤลenรญPลihlรกลกenรญNaStrรกnku() {
Assert.assertTrue(webDriver.findElement(By.xpath(managerID)).isDisplayed(),
โล tรญtek s ID manaลพera se nezobrazujeโ);
System.out.println(โZobrazuje se ลกtรญtek s ID sprรกvce.โ);
}
/** Kontroluje odkaz pro novรฉho zรกkaznรญka a odkaz pro pลevod finanฤnรญch prostลedkลฏ na dashboardu */
@Test(skupiny = { โspojenรญโ })
veลejnรก prรกzdnota tc05OvฤลenรญHyperlinkลฏ() {
Assert.assertTrue(webDriver.findElement(By.xpath(newCustomer)).isEnabled(),
โHypertextovรฝ odkaz na novรฉho zรกkaznรญka se nezobrazujeโ);
System.out.println(โZobrazuje se hypertextovรฝ odkaz pro novรฉho zรกkaznรญka.โ);
Assert.assertTrue(webDriver.findElement(By.xpath(pลevod prostลedkลฏ)).isEnabled(),
โHypertextovรฝ odkaz na pลevod finanฤnรญch prostลedkลฏ se nezobrazujeโ);
System.out.println(โZobrazuje se hypertextovรฝ odkaz na pลevod finanฤnรญch prostลedkลฏโ);
}
}
Upozornฤnรญ: pลihlaลกovacรญ รบdaje k demo bankovnictvรญ zลฏstรกvajรญ platnรฉ pลibliลพnฤ 20 dnรญ, takลพe lokรกlnรญ spuลกtฤnรญ mลฏลพe po uplynutรญ tรฉto doby zobrazit chybu โneplatnรฉ pลihlaลกovacรญ รบdajeโ.
Vysvฤtlenรญ kรณdu:
Pฤt zkuลกebnรญch metod, jedna na akci, kaลพdรก s sebou nese groups atribut na @Test anotace.
Dva logickรฉ popisky skupin jsou strong_ties a bonding.
- Prvnรญ a tลetรญ metoda zahrnujรญ obฤ
bondingastrong_ties, takลพe se spouลกtฤjรญ vลพdy, kdyลพ je kterรกkoli ze skupin zahrnuta v sadฤ. Toto je bฤลพnรฝ vzorec pro sdรญlenรฉ modelovรฝ pลรญpad kroky. - Druhรก metoda je oznaฤena pouze pomocรญ
bonding, takลพe bฤลพรญ pouze tehdy, kdyลพbondingskupina je zahrnuta. - ฤtvrtรก metoda je oznaฤena pouze pomocรญ
strong_ties, takลพe se spustรญ pouze tehdy, kdyลพ je tato skupina zahrnuta. - Pรกtรก metoda je oznaฤena pouze pomocรญ
bonding, takลพe bฤลพรญ pouze tehdy, kdyลพbondingskupina je zahrnuta.
Nรกsledujรญ ฤtyลi scรฉnรกลe provedenรญ:
Scรฉnรกล 1: Spusลฅte kaลพdou testovacรญ metodu bez ohledu na skupinu. Odstraลte <groups> blok z bฤลพรญcรญho XML.
Scรฉnรกล 2: Spouลกtฤt pouze metody vรกzanรฉ na vybranou skupinu, a to strong_ties or bondingPodรญvejte se prosรญm na video nรญลพe.
- V prvnรญ ฤรกsti videa,
<groups>blok je zakomentovรกn, takลพe se spustรญ kaลพdรก testovacรญ metoda. - Ve druhรฉ ฤรกsti se obnovรญ skupinovรฝ filtr a spustรญ se pouze odpovรญdajรญcรญ metody.
Scรฉnรกล 3: Pro pลeskoฤenรญ vybranรฝch testovacรญch pลรญpadลฏ pouลพijte filtr vylouฤenรญ. Podรญvejte se na video.
- Demoverze nezahrnuje
tc02podle nรกzvu v spuลกtฤnรฉm XML a vรฝslednรก sestava potvrzuje, ลพe vylouฤenรก metoda se nespustรญ.
Scรฉnรกล 4: Pouลพรญt filtr zahrnutรญ pouze pro spuลกtฤnรญ tc01LaunchURL, tc03EnterCredentials, a tc05VerifyHyperlinksPodรญvejte se prosรญm na video.
V tomto spuลกtฤnรญ se provedou pouze metody uvedenรฉ ve filtru include, pลesnฤ tak, jak jsou nakonfigurovรกny.
Stรกhnฤte si ukรกzkovรฝ projekt z nรญลพe uvedenรฉho odkazu.
Stรกhnฤte si vรฝลกe uvedenรฝ soubor Code
Zรกvฤr
Skupiny v TestNG zvฤtลกit strukturu Selenium a sady jednotek nahrazenรญm jednorรกzovรฝch rozdฤlenรญ tลรญd deklarativnรญmi XML filtry.
Oznaฤte svรฉ metody pomocรญ @Test(groups = {...}), pak pouลพijte <include>, <exclude>, a dependsOnGroups ลรญdit kouลovรฉ, regresnรญ a end-to-end bฤhy ze stejnรฉho projektu Maven na TestNG 7.x


