TestNG Posluchači v Selenium: Příklad ITestListener & ITestResult
Hlavní posluchači jsou dva.
- Posluchače WebDriver
- TestNG Posluchači
V tomto tutoriálu budeme diskutovat o Testng Posluchači.
V čem jsou posluchači TestNG?
Listener je definován jako rozhraní, které upravuje výchozí nastavení TestNGchování uživatele. Jak název napovídá, posluchači „poslouchají“ událost definovanou v selenovém skriptu a podle toho se chovají. Používá se v selenu implementací rozhraní Listeners. Umožňuje přizpůsobení TestNG zprávy nebo protokoly. Existuje mnoho druhů TestNG posluchači k dispozici.
Typy posluchačů v TestNG
Existuje mnoho typů posluchačů, které vám umožňují změnit TestNGchování uživatele.
Níže je několik TestNG posluchači:
- IAnnotationTransformer ,
- IAnnotationTransformer2 ,
- IKonfigurovatelné,
- IConfigurationListener,
- IExecutionListener,
- IHookable ,
- IIInvokedMethodListener ,
- IIInvokedMethodListener2 ,
- IMethodInterceptor,
- ireportér,
- ISuiteListener,
- ITestListener .
Nad rozhraním se nazývají TestNG Posluchači. Tato rozhraní se v selenu používají ke generování protokolů nebo přizpůsobení TestNG zprávy.
V tomto tutoriálu implementujeme ITestListener.
ITestListener má následující metody
- OnStart- Metoda OnStart je volána při spuštění jakéhokoli testu.
- onTestSuccess- Metoda onTestSuccess se volá po úspěchu jakéhokoli testu.
- onTestFailure- Metoda onTestFailure se volá při selhání jakéhokoli testu.
- onTestSkipped- Metoda onTestSkipped je volána při přeskočení jakéhokoli testu.
- onTestFailedButWithinSuccessPercentage- metoda se volá pokaždé, když se test nezdaří, ale je v rámci procenta úspěšnosti.
- onFinish- Metoda onFinish se volá po provedení všech testů.
Scénář testu
V tomto testovacím scénáři zautomatizujeme přihlašovací proces a implementujeme 'ItestListener'.
Kroky k vytvoření a TestNG Posluchač
Pro výše uvedený testovací scénář implementujeme Listener.
Krok 1) Vytvořte třídu „ListenerTest“, která implementuje „ITestListener“. Přesuňte kurzor myši na červený čárový text a Eclipse navrhne vám 2 rychlé opravy, jak je znázorněno na obrazovce níže:
Stačí kliknout na „Přidat neimplementované metody“. Do kódu je přidáno více neimplementovaných metod (bez těla). Zkontrolujte níže -
package Listener_Demo; import org.testng.ITestContext ; import org.testng.ITestListener ; import org.testng.ITestResult ; public class ListenerTest implements ITestListener { @Override public void onFinish(ITestContext arg0) { // TODO Auto-generated method stub } @Override public void onStart(ITestContext arg0) { // TODO Auto-generated method stub } @Override public void onTestFailedButWithinSuccessPercentage(ITestResult arg0) { // TODO Auto-generated method stub } @Override public void onTestFailure(ITestResult arg0) { // TODO Auto-generated method stub } @Override public void onTestSkipped(ITestResult arg0) { // TODO Auto-generated method stub } @Override public void onTestStart(ITestResult arg0) { // TODO Auto-generated method stub } @Override public void onTestSuccess(ITestResult arg0) { // TODO Auto-generated method stub } }
Upravme třídu 'ListenerTest'. Zejména upravíme následující metody -
onTestFailure, onTestSkipped, onTestStart, onTestSuccess, etc.
Úprava je jednoduchá. Vytiskneme pouze název testu.
Protokoly se vytvářejí v konzole. Pro uživatele je snadné pochopit, který test je úspěšný, neúspěšný a přeskočený.
Po úpravě kód vypadá takto-
package Listener_Demo; import org.testng.ITestContext; import org.testng.ITestListener; import org.testng.ITestResult; public class ListenerTest implements ITestListener { @Override public void onFinish(ITestContext Result) { } @Override public void onStart(ITestContext Result) { } @Override public void onTestFailedButWithinSuccessPercentage(ITestResult Result) { } // When Test case get failed, this method is called. @Override public void onTestFailure(ITestResult Result) { System.out.println("The name of the testcase failed is :"+Result.getName()); } // When Test case get Skipped, this method is called. @Override public void onTestSkipped(ITestResult Result) { System.out.println("The name of the testcase Skipped is :"+Result.getName()); } // When Test case get Started, this method is called. @Override public void onTestStart(ITestResult Result) { System.out.println(Result.getName()+" test case started"); } // When Test case get passed, this method is called. @Override public void onTestSuccess(ITestResult Result) { System.out.println("The name of the testcase passed is :"+Result.getName()); } }
Krok 2) Vytvořte další třídu „TestCases“ pro automatizaci procesu přihlašování. Selenium spustí tento 'TestCases' pro automatické přihlášení.
package Listener_Demo; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; import org.testng.Assert; import org.testng.annotations.Listeners; Import org.testng.annotations.Test; public class TestCases { WebDriver driver= new FirefoxDriver(); // Test to pass as to verify listeners . @Test public void Login() { driver.get("http://demo.guru99.com/V4/"); driver.findElement(By.name("uid")).sendKeys("mngr34926"); driver.findElement(By.name("password")).sendKeys("amUpenu"); driver.findElement(By.name("btnLogin")).click(); } // Forcefully failed this test as to verify listener. @Test public void TestToFail() { System.out.println("This method to test fail"); Assert.assertTrue(false); } }
Krok 3) Dále implementujte tento posluchač do naší běžné třídy projektu, tj. „TestCases“. Existují dva různé způsoby připojení ke třídě a rozhraní.
Prvním způsobem je použít anotaci posluchačů (@Listeners), jak je uvedeno níže:
@Listeners(Listener_Demo.ListenerTest.class)
Používáme to ve třídě „TestCases“, jak je uvedeno níže.
Takže konečně třída ” TestCases ” vypadá po použití anotace posluchače:
package Listener_Demo; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; import org.testng.Assert; import org.testng.annotations.Listeners; import org.testng.annotations.Test; @Listeners(Listener_Demo.ListenerTest.class) public class TestCases { WebDriver driver= new FirefoxDriver(); //Test to pass as to verify listeners. @Test public void Login() { driver.get("http://demo.guru99.com/V4/"); driver.findElement(By.name("uid")).sendKeys("mngr34926"); driver.findElement(By.name("password")).sendKeys("amUpenu"); driver.findElement(By.id("")).click(); } //Forcefully failed this test as verify listener. @Test public void TestToFail() { System.out.println("This method to test fail"); Assert.assertTrue(false); } }
Struktura projektu vypadá takto:
Krok 4): Spusťte třídu „TestCases“. Metody ve třídě “ListenerTest” jsou volány automaticky podle chování metod označených jako @Test.
Krok 5): Ověřte, že výstup, který se protokoluje, se zobrazuje na konzole.
Výstup „TestCases“ bude vypadat takto:
[TestNG] Running: C:\Users\gauravn\AppData\Local\Temp\testng-eclipse--1058076918\testng-customsuite.xml Login Test Case started The name of the testcase passed is:Login TestToFail test case started This method to test fail The name of the testcase failed is:TestToFail PASSED: Login FAILED: TestToFail java.lang.AssertionError: expected [true] but found [false]
Použití Listeneru pro více tříd.
Pokud má projekt více tříd, může být přidávání posluchačů do každé z nich těžkopádné a náchylné k chybám.
V takových případech můžeme vytvořit testng.xml a přidat tag listeners v XML.
Tento posluchač je implementován v celé testovací sadě bez ohledu na počet tříd, které máte. Když spustíte tento soubor XML, posluchači budou pracovat na všech zmíněných třídách. Můžete také deklarovat libovolný počet tříd posluchačů.
Shrnutí
Posluchači musí generovat protokoly nebo přizpůsobovat TestNG zprávy v Selenium Webdriver.
- Existuje mnoho typů posluchačů a lze je použít podle požadavků.
- Listenery jsou rozhraní používaná ve skriptu webového ovladače selenium
- Předvedlo použití Listeneru v Selenium
- Implementoval posluchače pro více tříd