Grupe u TestNG
โก Pametni saลพetak
Grupe u TestNG omoguฤuju vam oznaฤavanje metoda testiranja logiฤkim oznakama, a zatim njihovo ukljuฤivanje ili iskljuฤivanje putem XML paketa. Ovaj pristup pojednostavljuje izvrลกavanje testa voฤeno dimom, regresijom i ovisnostima bez prepisivanja. Java kodirati.

TestNG je okvir za testiranje koji pokriva jediniฤne, funkcionalne, end-to-end, UI i integracijske testove za Java projektima.
Moลพete pokrenuti jedan paket ili viลกe paketa (paket enkapsulira povezane klase u definiranom rasporedu direktorija) stvaranjem XML paketa i njegovim pokretanjem putem Mavena.
TestNG Grupe s primjerom
Koristite grupe u TestNG kada:
- Ne ลพelite rasprลกiti metode testiranja po mnogim klasama iskljuฤivo prema funkcionalnom podruฤju, i
- ลฝelite preskoฤiti (ne izvrลกiti) odabrane testne sluฤajeve kao da ih nema u kodnoj bazi.
- Da biste postigli oba cilja, metode oznaฤavate u logiฤke grupe. TestNG zatim poลกtuje filtere โukljuฤiโ i โiskljuฤiโ deklarirane u XML paketu.
Donji isjeฤak prikazuje sintaksu oznaฤavanja grupa koja se koristi u testnoj metodi.
Ovdje se koriste dva naziva grupa, i to bonding i strong_tiesTo su logiฤke oznake koje moลพete preimenovati kako bi odgovarale vaลกem projektu.
The <groups> Oznaka oznaฤava poฤetak grupnih filtera unutar XML paketa.
Zatim prilagoฤavate XML kako biste odabrali odabranu grupu iz oznaฤenih klasa. Primjer u nastavku prikazuje sintaksu deklaracije grupe.
<trฤanje>
<ukljuฤiti ime="povezivanje" />
</trฤanje>
</skupine>
Pretpostavimo da jedna klasa sadrลพi 10 metoda testiranja.
Od tih metoda:
- 6 metode nose
bondinggrupa i - 4 metode nose
strong_tiesskupina.
Zatim postavljate Maven i Java staze i koristite Eclipse IDE za demonstraciju grupne upotrebe putem XML datoteka unutar Javaprojekt temeljen na Mavenu.
Stvorite XML za TestNG s oznakama
- XML (Extensible Markup Language) datoteka u Maven frameworku pohranjuje konfiguraciju za jedan ili viลกe testova, deklariranih unutar oznaka.
- Svaki testni unos je omotan u oznaku i moลพe sadrลพavati jednu ili viลกe TestNG klase.
- A Java razred s jednim ili viลกe @Test anotacije o njegovim metodama tretiraju se kao TestNG klase.
Viลกe oznaka se pojavljuje u nizu kako bi se izgradila radna datoteka testng.xml, naime , i .
- The oznaka sadrลพi naziv na razini paketa koji se koristi u TestNG izvjeลกฤa za saลพetke izvrลกenja.
- The <test name=โGuru 99 Demo testa dimaโ> Oznaka sadrลพi logiฤan naziv testa; izvjeลกฤe ga koristi za broj prolaza, neuspjeha i preskoka plus ukupno vrijeme izvrลกavanja i metapodatke grupe.
- The oznaka pokazuje na testnu klasu, gdje
com.group.guru99je paket iTC_Class1je naziv klase.
<!DOCTYPE apartman SUSTAV โhttp://testng.org/testng-1.0.dtdโ>
<apartman ime="Apartman">
<test ime="Guru 99 Demo testa dimaโ>
<skupine>
<trฤanje>
<ukljuฤiti ime="jake_veze" />
</trฤanje>
</skupine>
<Nastava>
<razred ime=โcom.group.guru99.TC_Class1โ />
</Nastava>
</test>
</apartman>
Ova XML konfiguracija navedena je u video uputama u sljedeฤim odjeljcima.
"iskljuฤi" ili "ukljuฤi" u testni XML
Ako vam se mehanizam grupiranja ฤini preteลพak za mali filter, paket testng.xml vam takoฤer omoguฤuje iskljuฤivanje ili ukljuฤivanje pojedinaฤnih metoda testiranja po imenu.
Ukljuฤi oznakuSintaksa za oznaku ukljuฤivanjaukljuฤiti ime="${TEST_CASE_NAME}" />
Biljeลกka: Moลพete ukljuฤiti ili iskljuฤiti viลกe testnih sluฤajeva u jednom pokretanju, a ista sintaksa vrijedi i za grupne filtere.
Koriลกtenje dependsOnGroups za naruฤeno izvrลกavanje
Osim obiฤne inkluzije, TestNG omoguฤuje jednoj grupi da ovisi o drugoj koristeฤi dependsOnGroups atribut. Izvrลกitelj osigurava da se svaka metoda u roditeljskoj grupi zavrลกi prije nego ลกto se pokrene bilo koja ovisna metoda, ลกto odrลพava preduvjete pouzdanima.
- Prvo prijava, zatim transakcije: Oznaฤi metode prijave s
group = "auth"i testove prijenosa oznaka sdependsOnGroups = {"auth"}Testovi prijenosa pokreฤu se tek nakon ลกto je prijava uspjeลกna. - Preskoฤi u sluฤaju neuspjeha: Ako metoda u roditeljskoj grupi ne uspije, TestNG oznaฤava ovisne metode kao preskoฤene umjesto da ih odmah oznaฤi kao neuspjeลกne, ลกto izvjeลกฤa odrลพava iskrenima.
- Kombinirajte s alwaysRun: Treba postaviti metode ฤiลกฤenja
alwaysRun = truetako da se rastavljanje i dalje provodi ฤak i kada uzvodna grupa zakaลพe.
Ovaj je obrazac uobiฤajen za end-to-end pakete gdje postavljanje API-ja mora biti dovrลกeno prije nego ลกto se pokrenu tvrdnje korisniฤkog suฤelja.
trฤanje TestNG Grupiraj, ukljuฤi, iskljuฤi kod (video demo)
U nastavku slijedi vodiฤ za Java kod i XML paket koji pokreฤu grupirati, iskljuฤiti i ukljuฤiti ponaลกanje.
Testni scenarij: Pokrenite Guru99 demo bankarsku stranicu, provjerite nekoliko elemenata na stranici za prijavu, unesite vjerodajnice i ponovno provjerite nekoliko stavki na nadzornoj ploฤi nakon prijave.
Biljeลกka: Svaki korak postoji u svojoj vlastitoj metodi, ali za vrijeme izvoฤenja redoslijed ovisi o unosima u XML paketu.
- Metoda 1: Inicijalizirajte preglednik i pokrenite URL (
tc01LaunchURL()). - Metoda 2: Provjerite zaglavlje stranice za prijavu (
tc02VerifyLaunchPage()). - Metoda 3: Unesite korisniฤko ime i lozinku u obrazac za prijavu (
tc03EnterCredentials()). - Metoda 4: Provjerite prisutnost ID-a upravitelja na korisniฤkoj nadzornoj ploฤi (
tc04VerifyLoggedInPage()). - Metoda 5: Provjerite dodatne poveznice na korisniฤkoj nadzornoj ploฤi (
tc05VerifyHyperlinks()).
Code za scenarij:
uvoz java.util.concurrent.TimeUnit;
uvoz org.openqa.selenium.By;
uvoz org.openqa.selenium.WebDriver;
uvoz org.openqa.selenium.firefox.FirefoxVozaฤi;
uvoz org.testng.Assert;
uvoz org.testng.annotations.Test;
javni staleลพ TC_Class1 {
javni statiฤki konaฤni webdriver webDriver = novi Firefoxvozaฤ();
Niz launchPageHeading = โ//h3[tekst()='Guru99 Bank]โ;
konaฤna Niz element_korisniฤkog_Namena = โ//ulaz[@naziv='uid']โ, element_lozinke = โ//unos[@name='lozinka']โ,
element_prijave = โ//ulaz[@name='btnLogin']โ;
konaฤna Niz vrijednost_korisniฤkog_Name = โmngr28642โ, vrijednost_lozinke = โydAnateโ;
konaฤna Niz ID upravitelja = โ//td[sadrลพi(tekst(),'Id upravitelja')]โ;
konaฤna Niz noviKupac = โ//a[@href='addcustomerpage.php']โ, Prijenos sredstava = โ//a[@href='FundTransInput.php']โ;
/** Ovaj testni sluฤaj inicijalizira webDriver */
@Test(skupine = { "povezivanje", "jake_veze" })
javna praznina tc01PokretanjeURL() {
webDriver.manage().window().maximize();
webDriver.manage().timeouts().implicitlyWait(20, VremenskaJedinica.SEKUNDE);
webDriver.get(โhttps://www.demo.guru99.com/V4/โ);
}
/** Provjerava prisutnost zaglavlja na stranici za prijavu */
@Test(skupine = { "povezivanje" })
javna praznina tc02VerifyLaunchPage() {
Assert.assertTrue(webDriver.findElement(By.xpath(launchPageHeading)).isDisplayed(),
"Naslov poฤetne stranice se ne prikazuje");
System.out.println("Prikazuje se zaglavlje poฤetne stranice");
}
/** Unosi korisniฤko ime, lozinku, a zatim klikne Prijava */
@Test(skupine = { "povezivanje", "jake_veze" })
javna praznina tc03UnesiVjerodajnice() {
webDriver.findElement(By.xpath(element_korisniฤkog_ime)).sendKeys(vrijednost_korisniฤkog_imena);
webDriver.findElement(By.xpath(element_lozinke)).sendKeys(vrijednost_lozinke);
webDriver.findElement(By.xpath(element_prijave)).click();
}
/** Provjerava ID upravitelja na nadzornoj ploฤi */
@Test(skupine = { "jake_veze" })
javna praznina tc04ProvjeriPrijavljenuStranicu() {
Assert.assertTrue(webDriver.findElement(By.xpath(IDUpravljaฤa)).isPrikazan(),
"Oznaka ID-a upravitelja nije prikazana");
System.out.println("Prikazuje se oznaka ID-a upravitelja");
}
/** Provjerava poveznicu za novog korisnika i poveznicu za prijenos sredstava na nadzornoj ploฤi */
@Test(skupine = { "povezivanje" })
javna praznina tc05ProvjeriHyperlinkove() {
Assert.assertTrue(webDriver.findElement(By.xpath(newCustomer)).isEnabled(),
"Hiperveza za novog kupca se ne prikazuje");
System.out.println(โPrikazuje se nova hiperveza za kupcaโ);
Assert.assertTrue(webDriver.findElement(By.xpath(transferfunda)).isEnabled(),
โHiperveza za prijenos sredstava nije prikazanaโ);
System.out.println(โPrikazuje se hiperveza za prijenos sredstavaโ);
}
}
Napomena: demo bankovne vjerodajnice ostaju vaลพeฤe otprilike 20 dana, tako da lokalno pokretanje moลพe prikazati greลกku nevaลพeฤih vjerodajnica nakon isteka tog razdoblja.
Objaลกnjenje koda:
Pet metoda ispitivanja, jedna po radnji, svaka nosi groups atribut na @Test komentarima.
Dvije logiฤke oznake grupa su strong_ties i bonding.
- Prva i treฤa metoda nose oboje
bondingistrong_ties, pa se pokreฤu kad god je bilo koja grupa ukljuฤena u paket. Ovo je uobiฤajeni obrazac za dijeljene testni sluฤaj stepenice. - Druga metoda je oznaฤena samo sa
bonding, pa se pokreฤe samo kada jebondinggrupa je ukljuฤena. - ฤetvrta metoda je oznaฤena samo sa
strong_ties, pa se pokreฤe samo kada je ta grupa ukljuฤena. - Peta metoda je oznaฤena samo sa
bonding, pa se pokreฤe samo kada jebondinggrupa je ukljuฤena.
Slijede ฤetiri scenarija izvrลกenja:
Scenarij 1: Pokrenite svaku metodu ispitivanja bez obzira na grupu. Uklonite <groups> blok iz pokrenutog XML-a.
Scenarij 2: Pokreni samo metode vezane za odabranu grupu, tj. strong_ties or bondingMolimo pogledajte videozapis u nastavku.
- U prvom dijelu videa,
<groups>blok je komentiran, tako da se svaka testna metoda izvrลกava. - U drugom dijelu, grupni filter se vraฤa u prvobitni oblik i izvode se samo odgovarajuฤe metode.
Scenarij 3: Primijenite filtar za izuzimanje kako biste preskoฤili odabrane testne sluฤajeve. Pogledajte videozapis.
- Demo verzija iskljuฤuje
tc02po imenu u pokrenutom XML-u, a izvjeลกฤe o rezultatima potvrฤuje da se iskljuฤena metoda ne izvodi.
Scenarij 4: Primijeni filtar ukljuฤivanja samo za pokretanje tc01LaunchURL, tc03EnterCredentialsi tc05VerifyHyperlinksMolimo pogledajte video.
U ovom pokretanju, izvrลกavaju se samo metode navedene u filteru za ukljuฤivanje, toฤno onako kako je konfigurirano.
Preuzmite primjer projekta s donje poveznice.
Zakljuฤak
Grupe u TestNG poveฤati strukturu Selenium i pakete jedinica zamjenom jednokratnih podjela klasa deklarativnim XML filterima.
Oznaฤite svoje metode s @Test(groups = {...}), a zatim upotrijebite <include>, <exclude>i dependsOnGroups za pokretanje dima, regresije i end-to-end izvrลกavanja iz istog Maven projekta na TestNG 7.x.

