Introduction aux écouteurs dans TestNG

Avant de comprendre les écouteurs dans TestNG, nous étudierons séparément les écouteurs et TestNG. Il y a des moments où nous souhaitons modifier le comportement de TestNG dans notre application et cela peut être fait par des interfaces. Ces interfaces qui aident l'utilisateur à le faire sont appelées écouteurs. Comme son nom l'indique, la tâche principale des «auditeurs» est d'écouter un événement défini et de réagir en conséquence. Le but principal pour lequel les écouteurs sont utilisés par les programmeurs est de créer des journaux et de créer des rapports personnalisés selon le scénario spécifique défini.

Il existe différents types d'écouteurs dans TestNG et chaque écouteur sert son objectif différent. Certains d'entre eux sont mentionnés ci-dessous:

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

Méthodes d'auditeurs dans TestNG

Bien qu'il existe de nombreux écouteurs disponibles dans TestNG et chaque écouteur a des méthodes spécifiques qui sont remplacées. Discutons des 2 écouteurs les plus populaires et des méthodes qu'ils remplacent:

1. ITestListener

ITestListener est l'un des écouteurs les plus couramment utilisés dans Selenium Webdriver. Le programmeur doit simplement implémenter l'interface ITestListener et remplacer toutes les méthodes de cette interface pour l'utiliser. Il effectue l'appel avant et après chaque test présent dans la suite. Il y a plusieurs méthodes qui sont mentionnées ci-dessous:

  • onStart: il s'agit de la première et principale méthode appelée après l'instanciation de la classe de test. Il peut également être utilisé pour récupérer le répertoire à partir duquel le test est exécuté.
  • onFinish: il s'agit de la dernière méthode à être appelée une fois toutes les méthodes remplacées terminées.
  • onTestStart (résultat ITestResult): cette méthode est appelée à chaque fois avant toute nouvelle méthode de test. Il indique qu'une méthode de test requise est démarrée.
  • onTestFailure (résultat ITestResult): cette méthode est appelée lorsqu'une méthode de test échoue car elle indique les échecs du test. Nous pouvons effectuer certaines tâches en cas d'échec du test, comme prendre la capture d'écran lorsqu'un test particulier échoue afin d'obtenir un aperçu plus approfondi de l'échec.
  • onTestSkipped (résultat ITestResult): cette méthode est appelée lorsqu'une méthode de test est ignorée pour l'exécution.
  • onTestSuccess (résultat ITestResult): cette méthode est appelée lorsqu'une méthode de test particulière est correctement exécutée. Le programmeur peut effectuer toute opération souhaitée sur le succès de la méthode de test en écrivant du code à l'intérieur de cette méthode.
  • onTestFailedButWithinSuccessPercentage (résultat ITestResult): cette méthode est appelée lorsqu'une méthode de test échoue avec un pourcentage de réussite. Par exemple, il représente le cas, si une méthode de test est exécutée 10 fois et échouée 5 fois. Il prend 2 paramètres, à savoir successPercentage et invocationCount. Dans le cas ci-dessus, successPercentage serait 50 et invocationCount serait 10.

2. ISuiteListener

Contrairement à ITestListener, qui est implémenté après chaque méthode de test, ISuiteListener est implémenté au niveau Suite. Il a deux méthodes qui sont remplacées:

  • onStart: Cette méthode est implémentée avant l'invocation de la suite de tests, ce qui signifie que tout le code écrit à l'intérieur est exécuté avant le début de toute suite.
  • onFinish: Cette méthode est implémentée après l'appel de la suite de tests, ce qui signifie que tout le code écrit à l'intérieur est exécuté après l'exécution de l'ensemble de la suite de tests.

Comment créer des écouteurs dans TestNG?

Il existe essentiellement deux façons de créer des écouteurs dans TestNG:

1. Nous pouvons utiliser l'interface @Listeners au sein de la classe.

Étape 1: La première et principale étape consiste à créer une classe pour Listener qui implémente ITestListener et remplace toutes ses méthodes expliquées ci-dessus.

Classe: TestListener.java

Code:

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());
)
)

Étape 2: Ensuite, nous devons implémenter l'écouteur ci-dessus dans le programme Java normal de connexion dans une application ayant les méthodes @test utilisant l'annotation @Listeners.

Classe: Testing.java

Code:

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);
)
)

Étape 3: Maintenant, nous pouvons ajouter une entrée de la classe dans le fichier XML comme celle donnée ci-dessous:

Code:





Production:

2. Nous pouvons utiliser directement des écouteurs dans le fichier XML.

Bien que l'approche ci-dessus d'ajouter les @listeners dans un travail de classe spécifique dans une suite ayant autant de classes, il n'est pas considéré comme une bonne approche pour ajouter l'écouteur à chaque classe. Au lieu de cela, nous pouvons créer l'entrée des écouteurs et des classes dans le fichier XML.

Étape 1: création d'une classe d'écouteur en Java implémentant ITestListener et remplaçant ses méthodes similaires à celle mentionnée ci-dessus.

Classe: TestListener.java

Code:

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());
)
)

Étape 2: Ensuite, nous devons créer un programme Java normal de connexion dans une application ayant toutes les méthodes @test et il n'est pas nécessaire d'utiliser l'annotation @Listeners.

Classe: Testing.java

Code:

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);
)
)

Étape 3: Maintenant, nous pouvons ajouter une entrée de l'écouteur et de la classe dans le fichier XML comme celle indiquée ci-dessous:

Code:







Production:

Conclusion

Ci-dessus, la description des écouteurs donne clairement la compréhension de base des écouteurs et comment ils sont implémentés dans le programme Java afin de personnaliser les journaux et les rapports. Avant d'utiliser un écouteur, une compréhension claire de tous les écouteurs et des scénarios spécifiques dans lesquels ils doivent être utilisés ainsi que des méthodes qu'ils remplacent est requise.

Articles recommandés

Ceci est un guide pour les auditeurs dans TestNG. Nous discutons ici des méthodes des écouteurs dans TestNG et de deux façons de créer des écouteurs dans TestNG. Vous pouvez également consulter nos autres articles connexes pour en savoir plus-

  1. Installer TestNG
  2. Événements AngularJS
  3. Qu'est-ce que XPath?
  4. Test de frameworks pour Java
  5. Annotations Java
  6. Surcharge en Java