Introduktion till lyssnare i TestNG

Innan vi först förstår lyssnarna i TestNG kommer vi att studera lyssnare och TestNG separat. Det finns tillfällen då vi vill ändra TestNGs beteende i vår applikation och detta kan göras av gränssnitt. Dessa gränssnitt som hjälper användaren att göra det kallas lyssnare. Som namnet antyder är "Lyssnares" primära uppgift att lyssna på en definierad händelse och reagera enligt det. Det huvudsakliga syftet som lyssnarna används av programmerarna är att skapa loggar och skapa anpassade rapporter enligt det specifika scenariot som definierats.

Det finns olika typer av lyssnare i TestNG och varje lyssnare tjänar sitt olika syfte. Några av dem nämns nedan:

  1. IConfigurable
  2. IAnnotationTransformer
  3. IHookable
  4. IReporter
  5. ISuiteListener

Metoder för lyssnare i TestNG

Även om det finns många lyssnare tillgängliga i TestNG och varje lyssnare har specifika metoder som åsidosätts. Låt oss diskutera de två mest populära lyssnarna och metoderna som åsidosätts av dem:

1. ITestListener

ITestListener är en av de mest använda lyssnarna i Selenium Webdriver. Programmeraren behöver helt enkelt implementera ITestListener-gränssnittet och åsidosätta alla metoder för detta gränssnitt för att kunna använda det. Det ringer samtalet före och efter varje test som finns i sviten. Det finns flera metoder i det som nämns nedan:

  • onStart: Detta är den första och främsta metoden som kallas efter att testklassen är instanserad. Det kan också användas för att hämta katalogen som testet körs från.
  • onFinish: Detta är den sista metoden som kallas efter att alla åsidosatta metoder har gjorts.
  • onTestStart (ITestResult-resultat): Den här metoden kallas varje gång innan någon ny testmetod. Det indikerar att en obligatorisk testmetod startas.
  • onTestFailure (ITestResult-resultat): Den här metoden kallas när någon testmetod misslyckas eftersom den indikerar testens misslyckanden. Vi kan utföra vissa uppgifter för testfel, som att ta skärmdumpen när ett visst test misslyckas för att få djupare insikt om misslyckande.
  • onTestSkipped (ITestResult-resultat): Den här metoden kallas när någon testmetod hoppas över för körning.
  • onTestSuccess (ITestResult-resultat): Den här metoden kallas när en viss testmetod framgångsrikt körs. Programmeraren kan utföra vilken som helst önskad operation på testmetodens framgång genom att skriva kod inuti denna metod.
  • onTestFailedButWithinSuccessPercentage (ITestResult-resultat): Den här metoden kallas när någon testmetod misslyckas med någon framgångsprocent. Till exempel representerar det fallet, om någon testmetod utförs 10 gånger och misslyckades 5 gånger. Det tar två parametrar, dvs successPercentage och invocationCount. För ovanstående fall skulle framgångsprocenten vara 50 och invocationCount skulle vara 10.

2. ISuiteListener

Till skillnad från ITestListener, som implementeras efter varje testmetod, implementeras ISuiteListener på Suite-nivå. Det har två metoder som åsidosätts:

  • onStart: Den här metoden implementeras innan anropet av testsviten, vilket innebär att all kod som är skriven inuti den körs innan en svit startar.
  • onFinish: Den här metoden implementeras efter invigningen av testsviten vilket innebär att all kod som är skriven inuti den körs efter att hela testsviten har körts.

Hur skapar jag lyssnare i TestNG?

Det finns i princip två sätt att skapa lyssnare i TestNG:

1. Vi kan använda @Listeners-gränssnittet inom klassen.

Steg 1: Det första och främsta steget är att skapa en klass för Listener som implementerar ITestListener och åsidosätter alla dess metoder som förklaras ovan.

Klass: TestListener.java

Koda:

package Demo;
import org.testng.ITestContext;
import org.testng.ITestListener;
import org.testng.ITestResult;
public class TestListener implements ITestListener
(
@Override
public void onTestStart(ITestResult res)
(
System.out.println("Started test case is "+ res.getName());
)
@Override
public void onStart(ITestContext res)
(
)
@Override
public void onFinish(ITestContext res)
(
)
// Run when the test case passed successfully
@Override
public void onTestSuccess(ITestResult res)
(
System.out.println("Test case passed is "+res.getName());
)
// Run when the test case fails
@Override
public void onTestFailure(ITestResult res)
(
System.out.println("Test case failed is "+res.getName());
)
// Run when test case pass with some failures
@Override
public void onTestFailedButWithinSuccessPercentage(ITestResult res)
(
System.out.println("Test case passed with failure is "+res.getName());
)
// Run when the test case is skipped
@Override
public void onTestSkipped(ITestResult res)
(
System.out.println("Test case skipped is :"+res.getName());
)
)

Steg 2: Därefter måste vi implementera ovanstående lyssnare i det vanliga Java-programmet för inloggning i ett program som har @testmetoderna med hjälp av @Listeners annotation.

Klass: Testning.java

Koda:

package 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(Demo.TestListener.class)
public class Testing
(
String driverPath =
"C:\\Users\\username\\Downloads\\Compressed\\geckodriver.exe";
public WebDriver driver;
@BeforeMethod
public void startBrowser() (
System.setProperty("webdriver.gecko.driver", driverPath);
DesiredCapabilities capabilities = DesiredCapabilities.firefox();
capabilities.setCapability("marionette", true);
driver= new FirefoxDriver();
)
// Test case to login an application which will pass .
@Test
public void LoginMethod()
(
driver.get("http://testing-ground.scraping.pro/login"); driver.findElement(By.id("usr")).sendKeys("admin");
driver.findElement(By.id("pwd")).sendKeys("123");
driver.findElement(By.xpath("//*(@id=\"case_login\")/form/input(3)")).
click();
)
// Test case for failure in order to check the working of listener.
@Test
public void FailMethod()
(
System.out.println("Forcefully making the method to fail");
Assert.assertTrue(false);
)
)

Steg 3: Nu kan vi lägga till en post i klassen i XML-filen som den som anges nedan:

Koda:





Produktion:

2. Vi kan använda add Listers i XML-filen direkt.

Även om ovanstående tillvägagångssätt att lägga till @ listarna i specifikt klassarbete i en svit med så många klasser, anses det inte vara ett trevligt tillvägagångssätt att lägga till lyssnaren till varje klass. Istället kan vi skapa posten för lyssnare och klasser i XML-filen.

Steg 1: Skapa en lyssnarklass i Java som implementerar ITestListener och åsidosätter metoderna för den som liknar den som nämns ovan.

Klass: TestListener.java

Koda:

package Demo;
import org.testng.ITestContext;
import org.testng.ITestListener;
import org.testng.ITestResult;
public class TestListener implements ITestListener
(
@Override
public void onTestStart(ITestResult res)
(
System.out.println("Started test case is "+ res.getName());
)
@Override
public void onStart(ITestContext res)
(
)
@Override
public void onFinish(ITestContext res)
(
)
// Run when the test case passed successfully
@Override
public void onTestSuccess(ITestResult res)
(
System.out.println("Test case passed is "+res.getName());
)
// Run when the test case fails
@Override
public void onTestFailure(ITestResult res)
(
System.out.println("Test case failed is "+res.getName());
)
// Run when test case pass with some failures
@Override
public void onTestFailedButWithinSuccessPercentage(ITestResult res)
(
System.out.println("Test case passed with failure is "+res.getName());
)
// Run when the test case is skipped
@Override
public void onTestSkipped(ITestResult res)
(
System.out.println("Test case skipped is :"+res.getName());
)
)

Steg 2: Nästa måste vi skapa ett normalt Java-program för inloggning i en applikation som har alla @testmetoder och det finns inget behov av att använda @Listeners-kommentarer.

Klass: Testning.java

Koda:

package 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 Testing
(
String driverPath = "C:\\Users\\username\\Downloads\\Compressed\\geckodriver.exe";
public WebDriver driver;
@BeforeMethod
public void startBrowser() (
System.setProperty("webdriver.gecko.driver", driverPath);
DesiredCapabilities capabilities = DesiredCapabilities.firefox();
capabilities.setCapability("marionette", true);
driver= new FirefoxDriver();
)
// Test case to login an application which will pass.
@Test
public void LoginMethod()
(
driver.get("http://testing-ground.scraping.pro/login"); driver.findElement(By.id("usr")).sendKeys("admin");
driver.findElement(By.id("pwd")).sendKeys("123");
driver.findElement(By.xpath("//*(@id=\"case_login\")/form/input(3)")).
click();
)
// Test case for failure in order to check the working of listener.
@Test
public void FailMethod()
(
System.out.println("Forcefully making the method to fail");
Assert.assertTrue(false);
)
)

Steg 3: Nu kan vi lägga till en post av lyssnaren och klassen i XML-filen som den som anges nedan:

Koda:







Produktion:

Slutsats

Ovan beskrivningen av lyssnare ger tydligt den grundläggande förståelsen för lyssnare och hur de implementeras i Java-programmet för att anpassa loggarna och rapporterna. Innan du använder någon lyssnare krävs en tydlig förståelse för alla lyssnarna och de specifika scenarierna i vilka de behöver användas tillsammans med de metoder som de åsidosätter.

Rekommenderade artiklar

Detta är en guide till lyssnare i TestNG. Här diskuterar vi metoder för lyssnare i TestNG och två sätt att skapa lyssnare i TestNG. Du kan också gå igenom våra andra relaterade artiklar för att lära dig mer-

  1. Installera TestNG
  2. AngularJS-händelser
  3. Vad är XPath?
  4. Testa ramverk för Java
  5. Java-kommentarer
  6. Övergripande i Java

Kategori: