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.

  • ???? ๏ธ Annotatsiooni sรผntaks: Kasutama @Test(groups = {"smoke","regression"}) et mรคrgistada mis tahes meetod รผhe vรตi mitme loogilise rรผhma nimega.
  • ๐Ÿ“œ XML-kontroll: . <groups><run><include> ja <exclude> Failis testng.xml olevad sildid otsustavad, millised sildistatud meetodid tegelikult kรคivitatakse.
  • ๐Ÿ”— Sรตltuvad: . dependsOnGroups atribuut sunnib jรคrjekorda seadma, nii et eeltingimustel pรตhinevad rรผhmad lรตpevad alati enne sรตltuvate testide algust.
  • ๐Ÿค– Tehisintellekti valik: Tehisintellekti testimรตju tรถรถriistad kaardistavad koodimuudatused asjakohastele rรผhmadele, nii et iga commitiga tรถรถtavad ainult mรตjutatud komplektid.
  • ๐Ÿงช TestNG 7.x: Tรคnapรคevased versioonid hoiavad grupid tรคielikult รผhilduvana paralleelse teostuse, kuulajate ja Maven Surefire'i torujuhtmetega.

Grupid sisse TestNG

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.

@Test (rรผhmade = { "sidumine", โ€žtugevad_sidemedโ€ })

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.

<rรผhmade>
<jooks>
<sisaldama nimi="sidumine" />
</jooks>
</rรผhmade>

Oletame, et รผks klass sisaldab 10 testimismeetodit.

Nendest meetoditest:

  • 6 meetodit kannavad bonding rรผhm ja
  • 4 meetodit kannavad strong_ties grupp.

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.guru99 on pakett ja TC_Class1 on 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.

Sildi vรคlistamine: Vรคlistamissildi sรผntaksvรคlistama nimi=โ€ž${TEST_JUHTUMI_NIMI}โ€ />
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 koos dependsOnGroups = {"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 = true Seega 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.

jooks TestNG Grupeeri, kaasa, vรคlista Code

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:

pakend com.group.guru99;

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 bonding ja strong_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, kui bonding grupp 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, kui bonding grupp 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 tc02 nime 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.

Laadige alla รผlaltoodud Code

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.

KKK

Grupp on loogiline silt, mis on testimismeetodi kรผlge kinnitatud. groups atribuut peal @TestSeejรคrel valib XML-komplekt rรผhmad kaasamis- ja vรคlistamisfiltrite abil, nii et saate kรคitusajal otsustada, milliseid sildistatud meetodeid kรคivitada.

sees <groups><run>, <include name="..."> sildistab valgesse nimekirja rรผhmad kรคivitamiseks ja <exclude name="..."> blokeerib neid. TestNG rakendab vรคljajรคtmisi pรคrast kaasamisi, seega jรคetakse vรคljajรคetud rรผhm alati vahele, isegi kui see on loetletud ka kaasamises.

. dependsOnGroups atribuut peal @Test relvajรตud TestNG et kรคivitada kรตik loetletud rรผhma meetodid enne sรตltuva meetodi kรคivitamist. Kui mรตni eeltingimuseks olev meetod ebaรตnnestub, TestNG mรคrgib sรตltuva meetodi vahelejรคetuks, mitte ebaรตnnestunuks.

Jah. The groups atribuut aktsepteerib massiivi, seega @Test(groups = {"smoke", "regression"}) paigutab รผhe meetodi mรตlemasse rรผhma. TestNG kรคivitab selle meetodi alati, kui kumbki rรผhm on komplektis, mis hoiab jagatud sammud KUIVAD.

TestNG 7.x on hooldatud liin, mille vรคljalasked on alla org.testng:testng Maveni koordinaadid. See hoiab rรผhmad, paralleelse teostuse ja kuulajad tรคielikult รผhilduvana tรคnapรคevaste Selenium 4 ja JDK 17 projektid.

Tehisintellekti testimรตju tรถรถriistad analรผรผsivad koodi erinevusi ja seejรคrel kaardistavad muudetud klassid neid hรตlmavate rรผhmadega. Konveier kรคivitab iga pull-requesti puhul ainult need sildistatud rรผhmad, vรคhendades tagasiside aega.ping riskantsed teed proovile pandud.

Jah. Tehisintellekti klastrite loomise algoritmid loevad ajaloolisi tรตrkelogisid, mรคrgistavad ebaรผhtlaseid teste ja pakuvad vรคlja stabiilse alamhulga, mis on mรคrgistatud kui regressionSeejรคrel kiidavad insenerid nimekirja heaks. TestNG juhib seda gruppi igal รตhtul, mis hoiab sviidi tihedana, kaotamata leviala.

Vรตta see postitus kokku jรคrgmiselt: