Grupid sisse TestNG
โก Nutikas kokkuvรตte
Grupid sisse TestNG vรตimaldab teil testimismeetodeid loogiliste siltidega mรคrgistada ning seejรคrel neid XML-i komplekti kaudu lisada vรตi vรคlistada. See lรคhenemisviis lihtsustab suitsu-, regressiooni- ja sรตltuvuspรตhiseid kรคivitamisi ilma รผmberkirjutamiseta. Java kood.

TestNG on testimisraamistik, mis hรตlmab รผhik-, funktsionaalseid, otsast lรตpuni, kasutajaliidese ja integratsiooniteste Java projekte.
Saate kรคivitada รผhe paketi vรตi mitu paketti (pakett kapseldab seotud klassid mรครคratletud kataloogipaigutuses), luues XML-paketi ja kรคivitades selle Maveni kaudu.
TestNG Rรผhmad nรคitega
Sa kasutad gruppe TestNG millal:
- Sa ei taha hajutada testimismeetodeid paljudesse klassidesse ainult funktsionaalse valdkonna jรคrgi ja
- Sa tahad valitud testijuhtumeid vahele jรคtta (mitte kรคivitada), justkui need koodibaasis puuduksid.
- Mรตlema eesmรคrgi saavutamiseks mรคrgistate meetodid loogilistesse rรผhmadesse. TestNG seejรคrel jรคrgib XML-komplektis deklareeritud filtreid โkaasamineโ ja โvรคlistamineโ.
Allolev koodilรตik nรคitab testimismeetodis kasutatavat grupisildistamise sรผntaksit.
Siin kasutatakse kahte rรผhma nime, nimelt bonding ja strong_tiesNeed on loogilised sildid, mida saate oma projektile vastavalt รผmber nimetada.
. <groups> Silt tรคhistab XML-komplekti sees olevate grupifiltrite algust.
Seejรคrel kohandate XML-i, et valida sildistatud klasside hulgast valitud rรผhm. Allolev nรคide nรคitab rรผhma deklaratsiooni sรผntaksit.
<jooks>
<sisaldama nimi="sidumine" />
</jooks>
</rรผhmade>
Oletame, et รผks klass sisaldab 10 testimismeetodit.
Nendest meetoditest:
- 6 meetodit kannavad
bondingrรผhm ja - 4 meetodit kannavad
strong_tiesgrupp.
Jรคrgmisena seadistate Maveni ja Java teed ja kasutage Eclipse IDE rรผhmade kasutamise demonstreerimiseks XML-failide kaudu a-s Java-pรตhine Maveni projekt.
Looge XML-i jaoks TestNG koos siltidega
- Maveni raamistiku XML-fail (Extensible Markup Language) salvestab รผhe vรตi mitme testi konfiguratsiooni, mis on deklareeritud raamistiku sees. tag.
- Iga testikirje on mรคhitud silt ja mahutab รผhe vรตi mitu TestNG klassidesse.
- A Java klass รผhe vรตi mitmega @Test selle meetodite annotatsioone kรคsitletakse kui TestNG klass.
Toimiva testng.xml faili loomiseks kuvatakse jรคrjest mitu silti, nimelt , ja .
- . silt sisaldab komplekti tasemel nime, mida kasutatakse TestNG tรคitmise kokkuvรตtete aruanded.
- . <test name=โGuru 99 suitsutesti demoโ> Silt sisaldab loogilist testi nime; aruanne kasutab seda lรคbimise, lรคbikukkumise ja vahelejรคtmise arvu, lisaks kogu tรคitmisaja ja grupi metaandmete jaoks.
- . silt viitab testklassile, kus
com.group.guru99on pakett jaTC_Class1on klassi nimi.
<!DOCTYPE komplekt SYSTEM โhttp://testng.org/testng-1.0.dtdโ>
<komplekt nimi="Sviit">
<test nimi="Guru 99 suitsutesti demo>
<rรผhmade>
<jooks>
<sisaldama nimi=โtugevad_sidemedโ />
</jooks>
</rรผhmade>
<klassid>
<klass nimi=โcom.group.guru99.TC_Klass1โ />
</klassid>
</test>
</komplekt>
Sellele XML-konfiguratsioonile viidatakse jรคrgmistes jaotistes olevates videoรผlevaadetes.
"vรคlista" vรตi "kaasa" test XML-is
Kui grupeerimismehhanism tundub vรคikese filtri jaoks koormav, vรตimaldab testng.xml komplekt teil ka รผksikuid testimismeetodeid nime jรคrgi vรคlja jรคtta vรตi kaasata.
Lisa silt: Lisamissildi sรผntakssisaldama nimi=โ${TEST_JUHTUMI_NIMI}โ />
Mรคrge: รhe kรคivitamise kรคigus saab kaasata vรตi vรคlistada mitu testijuhtumit ja sama sรผntaks kehtib ka rรผhmafiltrite kohta.
dependsOnGroups'i kasutamine jรคrjestatud tรคitmiseks
Lisaks lihtsale kaasamisele TestNG laseb รผhel rรผhmal teisest sรตltuda, kasutades dependsOnGroups atribuut. Kรคivitaja tagab, et iga vanemrรผhma meetod lรตpeb enne mis tahes sรตltuva meetodi kรคivitamist, mis hoiab eeltingimused usaldusvรครคrsed.
- Esmalt logi sisse ja seejรคrel tehingud: Sildi sisselogimismeetodid koos
group = "auth"ja siltide รผlekande testid koosdependsOnGroups = {"auth"}รlekandetestid kรคivituvad alles pรคrast sisselogimise รตnnestumist. - Jรคta ebaรตnnestumise korral vahele: Kui mรตni meetod รผlemgrupis ebaรตnnestub, TestNG mรคrgib sรตltuvad meetodid vahelejรคetuks, selle asemel, et neid otse nurjunuks pidada, mis hoiab aruanded ausad.
- Kombineeri alwaysRun'iga: Puhastusmeetodid peaksid olema paigas
alwaysRun = trueSeega toimub mahavรตtmine ka siis, kui รผlesvoolu rรผhm ebaรตnnestub.
See muster on tavaline otsast lรตpuni pakettide puhul, kus API seadistamine peab olema lรตpule viidud enne kasutajaliidese vรคidete kรคivitamist.
jooks TestNG Grupeerimine, kaasamine, koodi vรคlistamine (video demo)
Allpool on รผlevaade Java kood ja XML-komplekt, mis seda juhivad rรผhmitama, vรคlistama ja kaasama kรคitumist.
Testi stsenaarium: Kรคivitage Guru99 demopangandusveebisaiti, kontrollige sisselogimislehel mรตnda elementi, sisestage volitused ja kontrollige pรคrast sisselogimist uuesti armatuurlaual mรตned รผksused.
Mรคrge: Iga samm elab oma meetodis, kuid kรคitusajal sรตltub jรคrjekord XML-i komplekti kirjetest.
- Meetod 1: Kรคivitage brauser ja kรคivitage see URL (
tc01LaunchURL()). - Meetod 2: Kontrollige sisselogimislehe pรคist (
tc02VerifyLaunchPage()). - Meetod 3: Sisestage sisselogimisvormile kasutajanimi ja parool (
tc03EnterCredentials()). - Meetod 4: Kontrollige halduri ID olemasolu kasutaja armatuurlaual (
tc04VerifyLoggedInPage()). - Meetod 5: Kontrollige kasutaja armatuurlaual tรคiendavaid linke (
tc05VerifyHyperlinks()).
Code stsenaariumi jaoks:
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxJuht;
import org.testing.Assert;
import org.testng.annotations.Test;
avalik klass TC_Klass1 {
avalik staatiline lรตplik Veebidraiver veebidraiver = uus Firefoxjuht();
nรถรถr kรคivitaPagePealkiri = โ//h3[tekst()='Guru99 Pank;
lรตplik nรถรถr kasutajaNimi_element = โ//sisend[@nimi='uid']โ, parooli_element = โ//sisesta[@nimi='parool']โ,
sisselogimiselement = โ//sisend[@nimi='btnLogin']โ;
lรตplik nรถรถr kasutajaNimi_vรครคrtus = โMngr28642โ, parooli_vรครคrtus = โydAnateโ;
lรตplik nรถรถr halduri ID = โ//td[sisaldab(tekst();'Halduri ID')]โ;
lรตplik nรถรถr uusKlient = โ//a[@href='kliendilehe_lisamine.php']โ, fundTransfer = โ//a[@href='FundTransInput.php']โ;
/** See testjuhtum initsialiseerib veebidraiveri */
@Test(rรผhmade = { "sidumine", โtugevad_sidemedโ })
avalik tรผhjus tc01LaunchURL() {
webDriver.manage().window().maximize();
webDriver.manage().timeouts().implicitlyWait()20, Ajaรhik.SEKUNDID);
veebidraiver.get("https://www.demo.guru99.com/V4/");
}
/** Kontrollib pealkirja olemasolu sisselogimislehel */
@Test(rรผhmade = { "sidumine" })
avalik tรผhjus tc02VerifyLaunchPage() {
Assert.assertTrue(webDriver.findElement(By.xpath(launchPageHeading)).isDisplayed(),
โAvalehe pรคist ei kuvataโ);
System.out.println(โKuvatakse avalehe pรคisโ);
}
/** Sisestab kasutajanime ja parooli ning seejรคrel klรตpsab nupul โLogi sisseโ */
@Test(rรผhmade = { "sidumine", โtugevad_sidemedโ })
avalik tรผhjus tc03Sisesta volitused() {
webDriver.findElement(By.xpath(kasutajaNimi_element)).sendKeys(kasutajaNimi_vรครคrtus);
webDriver.findElement(By.xpath(parooli_element)).sendKeys(parooli_vรครคrtus);
webDriver.findElement(By.xpath(sisselogimiselement)).click();
}
/** Kontrollib halduri ID-d armatuurlaual */
@Test(rรผhmade = { โtugevad_sidemedโ })
avalik tรผhjus tc04Kontrollige sisselogitud leht() {
Assert.assertTrue(webDriver.findElement(By.xpath(managerID)).isDisplayed(),
โHalduri ID silti ei kuvataโ);
System.out.println(โKuvatakse halduri ID siltโ);
}
/** Kontrollib armatuurlaual linke โUus klientโ ja โFoodTransferโ */
@Test(rรผhmade = { "sidumine" })
avalik tรผhjus tc05Kontrollige hรผperlinke() {
Assert.assertTrue(webDriver.findElement(By.xpath(newCustomer)).isEnabled(),
โUue kliendi hรผperlinki ei kuvataโ);
System.out.println(โKuvatakse uue kliendi hรผperlinkโ);
Assert.assertTrue(webDriver.findElement(By.xpath(fundTransfer)).isEnabled(),
โRahaรผlekande hรผperlinki ei kuvataโ);
System.out.println(โKuvatakse rahaรผlekande hรผperlinkโ);
}
}
Pane tรคhele: demopanganduse volitused kehtivad umbes 20 pรคeva, seega vรตib kohalik kรคivitamine pรคrast selle aja mรถรถdumist kuvada kehtetute volituste vea.
Koodi selgitus:
Viis testimismeetodit, รผks iga toimingu kohta, igaรผhel on groups atribuut peal @Test mรคrkus.
Kaks loogilist rรผhmamรคrgist on strong_ties ja bonding.
- Esimene ja kolmas meetod hรตlmavad mรตlemat
bondingjastrong_ties, seega need kรคivituvad alati, kui kumbki rรผhm komplekti kuulub. See on jagatud rรผhmade puhul tavaline muster. testjuhtum sammud. - Teine meetod on mรคrgistatud ainult
bonding, seega see tรถรถtab ainult siis, kuibondinggrupp on kaasatud. - Neljas meetod on mรคrgistatud ainult
strong_ties, seega tรถรถtab see ainult siis, kui see rรผhm on kaasatud. - Viiendat meetodit mรคrgistatakse ainult
bonding, seega see tรถรถtab ainult siis, kuibondinggrupp on kaasatud.
Jรคrgnevad neli teostusstsenaariumi:
Stsenaarium 1: Kรคivita iga testimismeetod olenemata grupist. Eemalda <groups> plokk tรถรถtavast XML-ist.
Stsenaarium 2: Kรคivita ainult valitud grupiga seotud meetodeid, nimelt strong_ties or bondingPalun vaadake allolevat videot.
- Video esimeses osas
<groups>Plokk on kommenteeritud, seega tรถรถtab iga testimismeetod. - Teises osas taastatakse grupifilter ja kรคivitatakse ainult vastavad meetodid.
Stsenaarium 3: Valitud testide vahelejรคtmiseks rakendage vรคlistamisfiltrit. Palun vaadake videot.
- Demo vรคlistab
tc02nime jรคrgi tรถรถtavas XML-is ja tulemuste aruanne kinnitab, et vรคlistatud meetod ei tรถรถta.
Stsenaarium 4: Rakenda kaasamisfiltrit ainult kรคivitamiseks tc01LaunchURL, tc03EnterCredentialsja tc05VerifyHyperlinksPalun vaadake videot.
Sellel kรคivitamisel kรคivituvad ainult kaasamisfiltris loetletud meetodid tรคpselt nii, nagu on konfigureeritud.
Laadige nรคidisprojekt alla allolevalt lingilt.
Jรคreldus
Grupid sisse TestNG viia struktuur suureks Selenium ja รผhikukomplekte, asendades รผhekordsed klassijaotused deklaratiivsete XML-filtritega.
Mรคrgistage oma meetodid @Test(groups = {...}), seejรคrel kasutage <include>, <exclude>ja dependsOnGroups et juhtida samast Maveni projektist suitsu, regressiooni ja otsast lรตpuni kรคivitamist TestNG 7.x.

