Grupper i TestNG
โก Smart oppsummering
Grupper i TestNG lar deg merke testmetoder med logiske etiketter, og deretter inkludere eller ekskludere dem gjennom en XML-pakke. Denne tilnรฆrmingen forenkler rรธyk-, regresjons- og avhengighetsdrevne kjรธringer uten omskriving. Java kode.

TestNG er et testrammeverk som dekker enhetstester, funksjonstester, ende-til-ende-tester, brukergrensesnitt- og integrasjonstester for Java prosjekter.
Du kan kjรธre en enkelt pakke eller mange pakker (en pakke innkapsler relaterte klasser i et definert katalogoppsett) ved รฅ opprette en XML-pakke og utlรธse den gjennom Maven.
TestNG Grupper med eksempel
Du bruker grupper i TestNG nรฅr:
- Du รธnsker ikke รฅ spre testmetoder over mange klasser utelukkende etter funksjonsomrรฅde, og
- Du vil hoppe over (ikke kjรธre) valgte testtilfeller som om de var fravรฆrende i kodebasen.
- For รฅ oppnรฅ begge mรฅlene, tagger du metoder inn i logiske grupper. TestNG respekterer deretter filtrene ยซinkluderยป og ยซekskluderยป som er deklarert i XML-pakken.
Kodeutdraget nedenfor viser gruppemerkingssyntaksen som brukes pรฅ en testmetode.
To gruppenavn brukes her, nemlig bonding og strong_tiesDette er logiske etiketter som du kan gi nytt navn slik at de passer til prosjektet ditt.
Ocuco <groups> taggen markerer starten pรฅ gruppefiltre i XML-pakken.
Deretter tilpasser du XML-filen for รฅ velge en valgt gruppe fra de merkede klassene. Eksemplet nedenfor viser syntaksen for gruppedeklarasjonen.
<lรธpe>
<inkludere navn=ยซbindingยป />
</lรธpe>
</grupper>
Anta at en enkelt klasse inneholder 10 testmetoder.
Av disse metodene:
- 6 metoder bรฆrer
bondinggruppe, og - 4 metoder bรฆrer
strong_tiesgruppen.
Deretter setter du opp Maven og Java stier og bruk Eclipse IDE for รฅ demonstrere gruppebruk gjennom XML-filer i en Java-basert Maven-prosjekt.
Lag XML for TestNG med Tags
- XML-filen (Extensible Markup Language) i Maven-rammeverket lagrer konfigurasjonen for รฉn eller flere tester, deklarert i tag.
- Hver testoppfรธring er pakket inn i en merkelapp og kan holde รฉn eller flere TestNG klasser.
- A Java klasse med รฉn eller flere @Test annoteringer pรฅ metodene behandles som en TestNG klasse.
Flere tagger vises i rekkefรธlge for รฅ bygge en fungerende testng.xml-fil, nemlig , , og .
- Ocuco taggen inneholder navnet pรฅ suite-nivรฅ som brukes i TestNG rapporter for utfรธrelsessammendrag.
- Ocuco <test name=โGuru 99 Rรธyktestdemoยป> Taggen inneholder et logisk testnavn; rapporten bruker det for antall bestรฅtte, ikke bestรฅtte og utelatte testresultater, pluss total utfรธrelsestid og gruppemetadata.
- Ocuco taggen peker til testklassen, hvor
com.group.guru99er pakken ogTC_Class1er klassenavnet.
<!DOKTYPE suite SYSTEM ยซhttp://testng.org/testng-1.0.dtdยป>
<suite navn=ยซSuiteยป>
<test navn="Guru 99 Rรธyktestdemo>
<grupper>
<lรธpe>
<inkludere navn=ยซsterke_bรฅndยป />
</lรธpe>
</grupper>
<klasser>
<klasse navn=ยซcom.group.guru99.TC_Class1ยป />
</klasser>
</test>
</suite>
Denne XML-konfigurasjonen refereres til i videogjennomgangene i de neste avsnittene.
"ekskludere" eller "inkludere" i test-XML
Hvis gruppemekanismen fรธles tung for et lite filter, lar testng.xml-pakken deg ogsรฅ ekskludere eller inkludere individuelle testmetoder etter navn.
Inkluder taggSyntaks for inkluderingstaggeninkludere navn=ยซ${TEST_CASE_NAME}ยป />
OBS: Du kan inkludere eller ekskludere mange testtilfeller i รฉn kjรธring, og den samme syntaksen gjelder for gruppefiltre.
Bruk av dependsOnGroups for bestilt utfรธrelse
Utover vanlig inkludering, TestNG lar รฉn gruppe vรฆre avhengig av en annen ved hjelp av dependsOnGroups Attributtet. Lรธperen sรธrger for at alle metoder i den overordnede gruppen fullfรธres fรธr noen avhengig metode starter, noe som holder forhรฅndsvilkรฅrene pรฅlitelige.
- Logg inn fรธrst, deretter transaksjoner: Tagg innloggingsmetoder med
group = "auth", og tagoverfรธringstester meddependsOnGroups = {"auth"}Overfรธringstestene kjรธres bare etter at pรฅloggingen er bestรฅtt. - Hopp over ved feil: Hvis en metode i den overordnede gruppen feiler, TestNG markerer de avhengige metodene som hoppet over i stedet for รฅ feile dem direkte, noe som holder rapportene รฆrlige.
- Kombiner med alwaysRun: Oppryddingsmetoder bรธr angis
alwaysRun = truesรฅ nedbrytningen fortsetter selv nรฅr en oppstrรธms gruppe mislykkes.
Dette mรธnsteret er vanlig for ende-til-ende-pakker der API-oppsettet mรฅ fullfรธres fรธr brukergrensesnittpรฅstander starter.
Kjรธr TestNG Grupper, inkluderer, ekskluder kode (videodemo)
Nedenfor er en gjennomgang av Java koden og XML-pakken som driver gruppere, ekskludere og inkludere adferd.
Testscenario: Start Guru99 demobanknettsted, bekreft noen elementer pรฅ innloggingssiden, skriv inn pรฅloggingsinformasjon og bekreft noen elementer pรฅ dashbordet pรฅ nytt etter innlogging.
OBS: Hvert trinn har sin egen metode, men rekkefรธlgen under kjรธring avhenger av oppfรธringene i XML-pakken.
- Metode 1: Initialiser nettleseren og start den URL (
tc01LaunchURL()). - Metode 2: Bekreft overskriften pรฅ innloggingssiden (
tc02VerifyLaunchPage()). - Metode 3: Skriv inn brukernavn og passord pรฅ innloggingsskjemaet (
tc03EnterCredentials()). - Metode 4: Bekreft tilstedevรฆrelsen av leder-ID-en pรฅ brukerdashbordet (
tc04VerifyLoggedInPage()). - Metode 5: Bekreft flere lenker pรฅ brukerdashbordet (
tc05VerifyHyperlinks()).
Code for scenariet:
importere java.util.concurrent.TimeUnit;
importere org.openqa.selenium.By;
importere org.openqa.selenium.WebDriver;
importere org.openqa.selenium.firefox.FirefoxDrivere;
importere org.testing.Assert;
importere org.testng.annotations.Test;
offentlig klasse TC_Klasse1 {
offentlig statisk finale webdriver webDriver = nytt FirefoxDriver();
String lanseringssideOverskrift = ยซ//h3[tekst()='Guru99 Bank]โ;
slutt~~POS=TRUNC String brukernavn_element = ยซ//input[@name='uid']ยป, passordelement = ยซ//skriv inn[@navn='passord']ยป,
pรฅloggingselement = ยซ//inndata[@navn='btnLogin']ยป;
slutt~~POS=TRUNC String brukernavn_verdi = ยซmngr28642ยป, passordverdi = ยซydAnateยป;
slutt~~POS=TRUNC String leder-ID = ยซ//td[inneholder(tekst(),'Sjefs-ID')]ยป;
slutt~~POS=TRUNC String nyKunde = ยซ//a[@href='leggtilkundeside.php']ยป, fondsoverfรธring = ยซ//a[@href='FundTransInput.php']ยป;
/** Denne testtilfellet initialiserer webDriveren */
@Test(grupper = { ยซbindingยป, ยซsterke_bรฅndยป })
offentlig ugyldighet tc01LaunchURL() {
webDriver.manage().window().maximize();
webDriver.manage().timeouts().implisittVent(20, Tidsenhet.SEKUNDER);
webDriver.get("https://www.demo.guru99.com/V4/");
}
/** Sjekker tilstedevรฆrelsen av overskriften pรฅ innloggingssiden */
@Test(grupper = { ยซbindingยป })
offentlig ugyldighet tc02VerifyLaunchPage() {
Assert.assertTrue(webDriver.findElement(By.xpath(launchPageHeading)).isDisplayed(),
ยซOverskriften pรฅ hjemmesiden vises ikkeยป);
System.out.println(ยซOverskriften pรฅ hjemmesiden visesยป);
}
/** Skriver inn brukernavn og passord, og klikker deretter pรฅ logg inn */
@Test(grupper = { ยซbindingยป, ยซsterke_bรฅndยป })
offentlig ugyldighet tc03EnterCredentials() {
webDriver.findElement(By.xpath(brukernavn_element)).sendKeys(brukernavn_verdi);
webDriver.findElement(By.xpath(passordelement)).sendKeys(passordverdi);
webDriver.findElement(By.xpath(signIn_element)).klikk();
}
/** Verifiserer leder-ID-en pรฅ dashbordet */
@Test(grupper = { ยซsterke_bรฅndยป })
offentlig ugyldighet tc04VerifyLoggtInnSide() {
Assert.assertTrue(webDriver.findElement(By.xpath(managerID)).isDisplayed(),
ยซLeder-ID-etiketten vises ikkeยป);
System.out.println(ยซLeder-ID-etiketten visesยป);
}
/** Sjekker Ny kunde-lenke og FundTransfer-lenke pรฅ dashbordet */
@Test(grupper = { ยซbindingยป })
offentlig ugyldighet tc05VerifyHyperlinks() {
Assert.assertTrue(webDriver.findElement(By.xpath(newCustomer)).isEnabled(),
ยซNy kundehyperlenke vises ikkeยป);
System.out.println(ยซNy kundehyperlenke visesยป);
Assert.assertTrue(webDriver.findElement(By.xpath(fundTransfer)).isEnabled(),
ยซHyperkoblingen til pengeoverfรธring vises ikkeยป);
System.out.println(ยซHyperkobling til pengeoverfรธring visesยป);
}
}
Merk: Demobanklegitimasjonen er gyldig i omtrent 20 dager, sรฅ en lokal kjรธring kan vise en feilmelding om ugyldig legitimasjon etter at dette vinduet utlรธper.
Forklaring av koden:
Fem testmetoder, รฉn per handling, har hver en groups attributt pรฅ @Test merknad.
De to logiske gruppeetikettene er strong_ties og bonding.
- Den fรธrste og tredje metoden bรฆrer begge deler
bondingogstrong_ties, slik at de kjรธrer nรฅr en av gruppene er inkludert i suiten. Dette er et vanlig mรธnster for delte testforsรธk trinn. - Den andre metoden er bare merket med
bonding, sรฅ den kjรธrer bare nรฅrbondinggruppen er inkludert. - Den fjerde metoden er kun merket med
strong_ties, sรฅ den kjรธrer bare nรฅr den gruppen er inkludert. - Den femte metoden er kun merket med
bonding, sรฅ den kjรธrer bare nรฅrbondinggruppen er inkludert.
Fire utfรธrelsesscenarier fรธlger:
Scenario 1: Kjรธr alle testmetoder uavhengig av gruppe. Fjern <groups> blokk fra den kjรธrende XML-filen.
Scenario 2: Kjรธr kun metoder knyttet til en valgt gruppe, nemlig strong_ties or bondingSe videoen nedenfor.
- I den fรธrste delen av videoen,
<groups>blokken blir kommentert ut, slik at alle testmetoder kjรธrer. - I den andre delen gjenopprettes gruppefilteret, og bare de samsvarende metodene kjรธrer.
Scenario 3: Bruk ekskluderingsfilteret for รฅ hoppe over valgte testtilfeller. Se videoen.
- Demoen ekskluderer
tc02etter navn i den kjรธrende XML-filen, og resultatrapporten bekrefter at den ekskluderte metoden ikke kjรธrer.
Scenario 4: Bruk inkluderingsfilteret for รฅ bare kjรธre tc01LaunchURL, tc03EnterCredentialsog tc05VerifyHyperlinksSe videoen.
I denne kjรธringen kjรธres bare metodene som er oppfรธrt i include-filteret, nรธyaktig som konfigurert.
Last ned eksempelprosjektet fra lenken nedenfor.
Konklusjon
Grupper i TestNG bringe struktur til det store Selenium og enhetssuiter ved รฅ erstatte engangsklasseoppdelinger med deklarative XML-filtre.
Merk metodene dine med @Test(groups = {...}), bruk deretter <include>, <exclude>og dependsOnGroups รฅ drive rรธyk, regresjon og ende-til-ende-kjรธringer fra det samme Maven-prosjektet pรฅ TestNG 7.x.

