TestNG Hallgatók be Selenium

⚡ Okos összefoglaló

Hallgatók be Selenium WebDriver van TestNG olyan interfészek, amelyek elfogják a teszteseményeket a naplók, jelentések és a hiba utáni műveletek testreszabása érdekében. Ez a cikk ismerteti az ITestListener metódusokat, bemutat egy futtatható Java példát, és elmagyarázza, hogyan Selenium A 4-es verzió váltotta fel az elavult WebDriverEventListener-t.

  • Mit tesznek a hallgatók: Feliratkoznak TestNG olyan eseményeket, mint az indítás, a sikeres végrehajtás, a sikertelen végrehajtás és a kihagyás, a naplózási vagy jelentéskészítési hookok meghajtásához.
  • 🧩 Tizenkét interfész: TestNG olyan interfészeket szállít, mint az ITestListener, az ISuiteListener, az IReporter, az IInvokedMethodListener és az IAnnotationTransformer a részletes vezérlés érdekében.
  • 🇧🇷 Két bekötési mód: Csatolj egy figyelőt a @Listeners annotációval egyetlen osztályhoz, vagy regisztráld egyszer a testng.xml fájlon belül minden egyes osztálycsomaghoz.
  • 🚀 Selenium 4 frissítés: Az EventFiringWebDriver elavult; a modern WebDriverListener felület és az EventFiringDecorator mostantól WebDriver szintű eseményhookokat működtet.
  • 🤖 AI szög: A mesterséges intelligencia által támogatott figyelők automatikusan osztályozhatják a hibákat, intelligens képernyőképeket csatolhatnak, és valós időben visszaküldhetik a hibás tesztjelzéseket a CI-dashboardoknak.

TestNG Hallgatók be Selenium

Selenium A WebDriver szkripteknek gyakran kell reagálniuk olyan tesztelési eseményekre, mint például egy sikeres állítás, egy sikertelen lokátor vagy egy kihagyott lépés. A figyelők teszik ezt lehetővé. Általánosságban elmondható, Selenium A projektek két hallgatócsaládra támaszkodnak:

  1. WebDriver figyelők
  2. TestNG hallgatók

Ebben az oktatóanyagban a következőkre fogunk összpontosítani: TestNG Figyelők, megjegyzéssel arról, hogyan változtak a WebDriver szintű figyelők a következő időszakban: Selenium 4.x.

Mi a hallgató? TestNG?

A Listener egy olyan interfész, amely módosítja a(z) alapértelmezett viselkedését. TestNGAhogy a neve is sugallja, a figyelők egy adott dokumentumban meghatározott eseményekre „figyelnek”. Selenium szkriptet, és ennek megfelelően reagáljon. Ezeket a megfelelő Listener felület megvalósításával és a tesztosztályon vagy tesztcsomagon történő regisztrációjával használhatja. A Listenerek lehetővé teszik a testreszabást TestNG jelentéseket, képernyőképeket csatolhat, és strukturált naplókat küldhet ki.

A hallgatók típusai TestNG

TestNG egy figyelő interfészcsaládot szállít, és mindegyik a teszt életciklusának egy másik szakaszát célozza meg.

Az alábbiakban a gyakran használt TestNG hallgatók:

  1. IAnnotationTransformer
  2. IAnnotationTransformer2
  3. IKonfigurálható
  4. IConfigurationListener
  5. IExecutionListener
  6. Megfogható
  7. IInvokedMethodListener
  8. IIinvokedMethodListener2
  9. IMethodInterceptor
  10. IReporter
  11. ISuiteListener
  12. ITestListener

Ezeket az interfészeket használják Selenium naplók generálásához vagy testreszabásához TestNG jelentéseket. Ebben az oktatóanyagban a következőket fogjuk megvalósítani: ITestListener.

ITestListener a következő módszereket mutatja be:

  • onStart – meghívódik, amikor bármilyen teszt elindul.
  • onTestSuccess – akkor hívják, ha egy teszt sikeres.
  • onTestFailure – akkor hívják meg, ha egy teszt sikertelen.
  • onTestSkipped – akkor hívódik meg, ha egy tesztet kihagynak.
  • onTestFailedButWithinSuccessPercentage – akkor hívódik meg, ha egy teszt sikertelen, de a sikerességi százalékon belül van.
  • onFinish – az osztály összes tesztjének végrehajtása után hívódik meg.

Teszt forgatókönyv

Ebben a tesztforgatókönyvben automatizáljuk a bejelentkezési folyamatot, és megvalósítjuk a következőket: ITestListener ellene.

  1. Indít Firefox és nyissa meg az oldalt https://demo.guru99.com/V4/

Tesztforgatókönyv bejelentkezés URL

  1. Jelentkezzen be az alkalmazásba.

Tesztforgatókönyv bejelentkezési űrlap

A létrehozás lépései a TestNG hallgató

A fenti tesztforgatókönyvhöz lépésről lépésre fogjuk megvalósítani a Listenert.

Step 1) Hozz létre egy osztályt, melynek neve Figyelőteszt amely megvalósítja ITestListenerVigye az egérmutatót a piros aláhúzás fölé, és Eclipse két gyors megoldást javasol, az alábbiak szerint:

Eclipse gyorsjavítás nem megvalósított metódusok hozzáadásához

Kattintson a „Nem implementált metódusok hozzáadása” gombra. Több stub metódus (törzs nélkül) kerül hozzáadásra a kódhoz, ehhez hasonlóan:

csomag Figyelő_Demo;

importál org.testng.ITestContext;
importál org.testng.ITestListener;
importál org.testng.ITestResult;

nyilvános osztály Figyelőteszt munkagépek ITestListener {

@Override
közűr onFinish(ITestContext arg0) {
// TODO Automatikusan generált metódus stub
}

@Override
közűr onStart(ITestContext arg0) {
// TODO Automatikusan generált metódus stub
}

@Override
közűr onTestFailedButWithinSuccessPercentage(ITeszt Eredmény arg0) {
// TODO Automatikusan generált metódus stub
}

@Override
közűr onTestFailure(ITeszt Eredmény arg0) {
// TODO Automatikusan generált metódus stub
}

@Override
közűr onTestSkipped(ITeszt Eredmény arg0) {
// TODO Automatikusan generált metódus stub
}

@Override
közűr onTestStart(ITeszt Eredmény arg0) {
// TODO Automatikusan generált metódus stub
}

@Override
közűr onTestSuccess(ITeszt Eredmény arg0) {
// TODO Automatikusan generált metódus stub
}
}

Most módosítsuk a Figyelőteszt osztály. Különösen a következő metódusokat fogjuk kitölteni: onTestFailure, onTestSkipped, onTestStartés onTestSuccess.

A változás egyszerű: minden metódus kiírja a teszt nevét, így a konzol egyértelműen mutatja a sikeres, sikertelen és kihagyott állapotot.

A módosítás után a kód így néz ki:

csomag Figyelő_Demo;

importál org.testng.ITestContext;
importál org.testng.ITestListener;
importál org.testng.ITestResult;

nyilvános osztály Figyelőteszt munkagépek ITestListener {

@Override
közűr onFinish(ITestContext Eredmény) {
}

@Override
közűr onStart(ITestContext Eredmény) {
}

@Override
közűr onTestFailedButWithinSuccessPercentage(ITeszt Eredmény Eredmény) {
}

// Amikor egy teszteset meghiúsul, ezt a metódust hívjuk meg.
@Override
közűr onTestFailure(ITeszt Eredmény Eredmény) {
System.out.println(„A sikertelen teszteset neve:” + Eredmény.getNév());
}

// Amikor egy tesztesetet kihagyunk, ez a metódus hívódik meg.
@Override
közűr onTestSkipped(ITeszt Eredmény Eredmény) {
System.out.println(„A kihagyott teszteset neve:” + Eredmény.getNév());
}

// Amikor egy teszteset elindul, ez a metódus meghívódik.
@Override
közűr onTestStart(ITeszt Eredmény Eredmény) {
System.out.println(Eredmény.getNév() + „tesztelési eset elkezdődött”);
}

// Amikor egy teszteset sikeres, ez a metódus meghívódik.
@Override
közűr onTestSuccess(ITeszt Eredmény Eredmény) {
System.out.println(„A sikeres teszteset neve:” + Eredmény.getNév());
}
}

Step 2) Hozz létre egy másik osztályt, melynek neve Tesztesetek a bejelentkezés automatizálásához. Selenium végrehajtja ezt az osztályt a demó oldalra való bejelentkezéshez.

csomag Figyelő_Demo;

importál org.openqa.selenium.By;
importál org.openqa.selenium.WebDriver;
importál org.openqa.selenium.firefox.FirefoxDrivers;
importál org.testng.Assert;
importál org.testng.annotations.Listeners;
importál org.testng.annotations.Test;

nyilvános osztály Tesztesetek {
webdriver sofőr = új FirefoxVezető,

// Sikeres teszt, a sikeres figyelő ellenőrzésére.
@Teszt
közűr Bejelentkezés() {
illesztőprogram.get(„https://demo.guru99.com/V4/”);
driver.findElement(By.name()„uid”)).sendKeys(„mngr34926”);
driver.findElement(By.name()"Jelszó")).sendKeys(„amUpenu”);
driver.findElement(By.name()„btnBejelentkezés”)).kattintás();
}

// Kényszerítetten sikertelen teszt a hibafigyelő ellenőrzéséhez.
@Teszt
közűr Sikertelenségi Teszt() {
System.out.println(„Ez a módszer a tesztelés kudarcára”);
Assert.assertTrue()hamis);
}
}

Step 3) Ezután csatoljuk ezt a figyelőt a tesztosztályunkhoz TesztesetekKétféleképpen lehet egy osztályt egy figyelő interfészhez csatlakoztatni.

Az első mód a @Hallgatók annotáció, ahogy az alább látható:

@Listeners(Listener_Demo.ListenerTest.class)

Ezt a megjegyzést a fenti részhez adjuk hozzá. Tesztesetek osztály. Az osztály ekkor így néz ki:

csomag Figyelő_Demo;

importál org.openqa.selenium.By;
importál org.openqa.selenium.WebDriver;
importál org.openqa.selenium.firefox.FirefoxDrivers;
importál org.testng.Assert;
importál org.testng.annotations.Listeners;
importál org.testng.annotations.Test;

@Listeners(Listener_Demo.ListenerTest.class)
nyilvános osztály Tesztesetek {
webdriver sofőr = új FirefoxVezető,

// Sikeres teszt, a sikeres figyelő ellenőrzéséhez.
@Teszt
közűr Bejelentkezés() {
illesztőprogram.get(„https://demo.guru99.com/V4/”);
driver.findElement(By.name()„uid”)).sendKeys(„mngr34926”);
driver.findElement(By.name()"Jelszó")).sendKeys(„amUpenu”);
driver.findElement(By.name()„btnBejelentkezés”)).kattintás();
}

// Kényszerítetten sikertelen teszt a hibafigyelő ellenőrzéséhez.
@Teszt
közűr Sikertelenségi Teszt() {
System.out.println(„Ez a módszer a tesztelés kudarcára”);
Assert.assertTrue()hamis);
}
}

A projekt felépítése így néz ki:

TestNG Figyelő projekt felépítése

Step 4) Végezze el a Tesztesetek osztály. Metódusok belül Figyelőteszt automatikusan meghívódnak a -val jelölt metódusok viselkedése alapján. @Teszt.

Step 5) Ellenőrizze a konzolon megjelenő kimenetet.

A kimenet Tesztesetek úgy néz ki, mint a:

TestNG Figyelőkonzol kimenete

[TestNG] Futás:
C:\Users\gauravn\AppData\Local\Temp\testng-eclipse–1058076918\testng-customsuite.xml

Bejelentkezési teszteset elindítva
A sikeres teszteset neve: Bejelentkezés
TestToFail teszteset elindítva
Ez a módszer a tesztelés kudarcára
A sikertelen teszteset neve: TestToFail
SIKERESEN TELJESÍTVE: Bejelentkezés
SIKERTELEN: Teszt sikertelen
java.lang.AssertionError: a várt érték [true], de a találat [false]

Figyelő használata több osztályhoz

Ha egy projektnek sok tesztosztálya van, akkor a @Hallgatók Az egyesekhez fűzött megjegyzések nehézkessé és hibalehetőségeket kínálóvá válnak.

Ebben az esetben hozzon létre egy testng.xml fájlt, és regisztrálja ott egyszer a figyelőt.

testng.xml figyelőcímke több osztályhoz

Ez a figyelő ezután a teljes tesztkészletre vonatkozik, függetlenül az osztályok számától. Az XML fájl futtatásakor a figyelő a készletben deklarált összes osztályra aktiválódik, és tetszőleges számú figyelőosztályt láncolhatunk össze ugyanazon címkén belül.

WebDriverListener be van kapcsolva Selenium 4 vs. az elavult EventFiringWebDriver

Míg TestNG A figyelők a teszt életciklus-eseményeire reagálnak, a WebDriver figyelők pedig a böngésző-illesztőprogram műveleteire, például kattintásra, navigációra vagy findElement hívásra. Selenium 3 A tipikus megközelítés az volt, hogy WebDriverEventListener interfészen keresztül bekötve Eseménytüzelésű webillesztőprogramMindkettő elavult a következőben: Selenium 4.x.

A modern helyettes a WebDriverListener interfész kombinálva EseményégetésDekoratőr:

importál org.openqa.selenium.WebDriver;
importál org.openqa.selenium.chrome.ChromeDriver;
importál org.openqa.selenium.support.events.EventFiringDecorator; (A rövidítések és szimbólumok jelentése nélkül nehéz pontosabb fordítást adni.)
importál org.openqa.selenium.support.events.WebDriverListener; (A magyar fordítás megegyezik az eredeti angol szöveggel.)

nyilvános osztály Naplózásfigyelő munkagépek WebDriverListener {
@Override
közűr beforeGet(webdriver illesztőprogram, karakterlánc url) {
System.out.println(„Navigáció ide” + url);
}
}

webdriver nyers = új ChromeDriver,
webdriver sofőr = új EseményégetésDekoratőr<>(új NaplózásListener()).decorate(raw);

A dekorátor bármilyen WebDriver, WebElement vagy Alert elemet képes becsomagolni, ami rugalmasabb, mint a régi, eseményindító burkoló. WebDriverListener a böngészőoldali megfigyelhetőség és TestNG ITestListener csomagszintű jelentéskészítéshez.

Mesterséges intelligencia által vezérelt figyelők: Okosabb naplók és hibaelemzés

Modern Selenium A csapatok egyre inkább mesterséges intelligencia szolgáltatásokat kapcsolnak a hallgatóikhoz, hogy a CI-jeleket hatékonyabban lehessen használni. onTestFailureegy mesterséges intelligencia által támogatott figyelő rögzíthet egy DOM-pillanatképet és egy képernyőképet, elküldheti azokat egy modellnek, amely visszaadja a valószínűsíthető kiváltó ok klaszterét, és visszaírhat egy címkét a TestNG jelentés vagy egy eszköz, mint például a ReportPortal.

A mesterséges intelligencia által vezérelt gyakori minták a következők:

  • Pelyhes teszt észlelése: A figyelők továbbítják a sikeres/sikertelen idővonalakat egy olyan modellnek, amely a hibát egyenetlen, környezeti vagy valós regresszióként osztályozza.
  • Intelligens képernyőképek: A számítógépes látás modellezi a felhasználói felület képernyőképeinek kivágását, jegyzetekkel való ellátását és differenciálását, így a felülvizsgálók a módosított régiót látják a teljes oldalas kép helyett.
  • Öngyógyító lokátorok: A WebDriverListener horgok beforeFindElement és megkér egy mesterséges intelligencia által segített segítőt, hogy javasoljon egy alternatív lokátort, amikor az elsődleges dob NoSuchElementException.
  • Természetes nyelvű összefoglalók: An IReporter A megvalósítás során a tananyag eredményeit egy LLM tananyagba integráljuk, amely egy bekezdéses összefoglalót készít.

A figyelő réteg a legtisztább hely ezen hookok beillesztésére, mivel kívül marad a tesztlogikán, és egységesen érvényesül a teljes csomagban.

Összegzésként

A figyelőknek naplókat kell létrehozniuk vagy testreszabniuk TestNG jelentések ben Selenium WebDriver.

  • TestNG számos figyelőfelületet kínál; válassza ki azt, amelyik megfelel az Önt érdeklő eseménynek.
  • A figyelők olyan interfészek, amelyeket a következőkben használnak: Selenium WebDriver szkriptek a teszt életciklusának eseményeire való reagáláshoz.
  • Az oktatóanyag bemutatta ITestListener egy sikeres és egy elégtelen vizsgával.
  • Figyelőt csatolhatsz a következővel: @Hallgatók vagy regisztrálja egyszer testng.xml az egész lakosztálynak.
  • Selenium 4.x lecseréli Eseménytüzelésű webillesztőprogram ahol WebDriverListener + EseményégetésDekoratőr WebDriver szintű eseményekhez.

GYIK

A Listener egy olyan interfész, amely feliratkozik a folyamat során generált eseményekre. Selenium tesztüzem. TestNG A figyelők a teszt életciklusának eseményeire reagálnak, mint például az indítás, a sikeres végrehajtás, a sikertelen végrehajtás és a kihagyás. A WebDriver figyelők a böngésző-illesztőprogram eseményeire reagálnak, mint például a kattintások, a navigációk és a findElement hívásai.

Az ITestListener az egyes @Test metódusok esetén aktiválódik, és az onTestStart, onTestSuccess, onTestFailure, onTestSkipped és onFinish metódusokat teszi elérhetővé. Az ISuiteListener csomagonként csak kétszer aktiválódik, az onStart és az onFinish metódusokkal, így ideális csomagszintű beállításokhoz, például egy jelentésfájl megnyitásához.

Regisztrálni lehet a TestNG kétféleképpen lehet a listenert használni: hozzáadhatjuk a @Listeners(MyListener.class) annotációt a tesztosztály fölé, vagy deklarálhatunk egy tag a testng.xml fájlon belül. Az XML megközelítés a figyelőt a csomag minden osztályára alkalmazza a forráskód módosítása nélkül.

Az EventFiringWebDriver és a WebDriverEventListener elavult a következőben: Selenium 4.x. Az ajánlott csere a WebDriverListener interfész az EventFiringDecoratorral kombinálva, amely képes WebDriver, WebElement vagy Alert példányokat becsomagolni, és letisztultabb kapcsolódási pontokat kínál, mint például a beforeGet és az afterClick.

Használd az IReporter-t, ha egyéni jelentést szeretnél készíteni a csomag befejezése után, például HTML vagy JSON összefoglalót. Használd az IInvokedMethodListener-t, ha minden tesztelési metódus előtt és után egy hookra van szükséged, beleértve a konfigurációs metódusokat, mint például a @BeforeMethod és az @AfterMethod.

A mesterséges intelligencia modellek gazdagíthatják a figyelő kimenetét azáltal, hogy minden naplóbejegyzést súlyossággal címkéznek, természetes nyelvű lépésleírásokat generálnak, és klaszterezik a kapcsolódó hibákat. Az onTestFailure-en belül egy mesterséges intelligencia szolgáltatás elemezheti a képernyőképet és a veremfájlokat. trace, majd csatoljon egy valószínűsíthető kiváltó okot a TestNG jelentésben.

Igen. Egy figyelő streamelheti a sikeres/sikertelen eseményeket egy mesterséges intelligencia szolgáltatásnak, amely a hibát egyenetlen, környezeti vagy valós visszaesésként osztályozza. Az ítéletet egy TestNG attribútum, így az irányítópultok karanténba helyezhetik a bizonytalan teszteket anélkül, hogy egy ember felülvizsgálná az összes piros buildet.

Foglald össze ezt a bejegyzést a következőképpen: