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.

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:
- WebDriver figyelők
- 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:
- IAnnotationTransformer
- IAnnotationTransformer2
- IKonfigurálható
- IConfigurationListener
- IExecutionListener
- Megfogható
- IInvokedMethodListener
- IIinvokedMethodListener2
- IMethodInterceptor
- IReporter
- ISuiteListener
- 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.
- Indít Firefox és nyissa meg az oldalt https://demo.guru99.com/V4/
- Jelentkezzen be az alkalmazásba.
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:
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:
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:
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.
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ó:
Ezt a megjegyzést a fenti részhez adjuk hozzá. Tesztesetek osztály. Az osztály ekkor így néz ki:
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:
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:
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.
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.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.






