TestNG Génération de rapports dans Selenium: Comment générer ?

⚡ Résumé intelligent

TestNG Les rapports sont les fichiers de résultats HTML par défaut. TestNG écrit dans le dossier test-output après chaque exécution, indiquant quels cas de test ont réussi, échoué ou ont été ignorés, ainsi que tous les journaux du rapporteur.

  • (I.e. Sortie par défaut : chaque TestNG La commande run crée un dossier de sortie de test sans aucun code supplémentaire.
  • ☑️ Deux vues HTML : Le fichier emailable-report.html résume les résultats, tandis que le fichier index.html donne accès aux vues détaillées.
  • ✅ Journaux des rapporteurs : La fonction Reporter.log() inscrit directement les messages personnalisés dans le rapport généré.
  • 🧪 La suite s'exécute : L'exécution de testng.xml regroupe plusieurs classes dans un seul rapport consolidé.
  • ️ Personnalisation: ITestListener et IReporter permettent à une équipe de créer son propre format de rapport.
  • (I.e. Au-delà des valeurs par défaut : ExtentReports et Allure ajoutent des graphiques, un historique et des captures d'écran en pièces jointes.

TestNG génération de rapports dans Selenium

Quels sont TestNG Rapports?

TestNG Rapports sont les rapports HTML par défaut qui sont générés une fois les cas de test exécutés à l'aide de TestNG. Ces rapports vous aident à identifier les informations sur les cas de test et l'état d'un projet. TestNG rapports dans Selenium Enregistrez trois résultats pour chaque méthode de test — réussite, échec et ignoré — afin de pouvoir consulter en un coup d'œil les données relatives aux cas de test.

La génération de rapports est très importante lorsque vous effectuez des tests d'automatisation ainsi que pour des tests manuels.

  • En examinant le résultat, vous pouvez facilement identifier le nombre de cas de test réussis, échoués et ignorés.
  • En consultant le rapport, vous saurez quel est l'état d'avancement du projet.

Selenium WebDriver est utilisé pour automatiser l'application web, mais il ne génère aucun rapport par lui-même.

  • Le TestNG générera le rapport par défaut.
  • Lorsque vous exécutez le fichier testng.xml et actualisez le projet, vous obtenez un dossier test-output contenant les rapports de sortie. TestNG.
  • Faites un clic droit sur emailable-report.html et sélectionnez l'option Ouvrir avec le navigateur web.

À noter: le comportement décrit ici reste inchangé dans TestNG 7.x. Sorties de TestNG Les versions 7.6 et suivantes nécessitent JDK 11 ou une version supérieure ; par conséquent, un projet plus ancien peut nécessiter une mise à niveau de son niveau JDK avant que les rapports ne soient produits.

Types d' TestNG Rapports dans le dossier de sortie des tests

Avant d'ouvrir un seul fichier, il est utile de savoir ce que contient réellement le dossier de sortie des tests. TestNG Il génère plusieurs artefacts à chaque exécution, et chacun d'eux répond à une question différente.

Fichier ou dossier Ce qu'il contient Quand c'est utile
index.html Le rapport d'atterrissage qui donne accès aux résultats, aux groupes, aux horaires et aux vues de sortie du rapporteur. Analyse détaillée d'une course.
rapport-envoyable par courriel.html Une seule page autonome récapitulant les méthodes réussies, échouées et ignorées pour chaque classe. Partager un résultat avec des personnes qui n'ouvrent pas le projet.
testng-results.xml Le fichier XML lisible par machine, généré par le rapporteur XML intégré, avec l'état et la durée de chaque méthode. Alimenter un tableau de bord ou un analyseur personnalisé.
rapports de Junit JUnit- Fichiers XML au format, un par classe de test. Tout plug-in CI qui lit le JUnit Format du résultat.
testng-failed.xml Un fichier de suite généré qui répertorie uniquement les méthodes ayant échoué. Relancer uniquement les tests ayant échoué, au lieu de l'ensemble de la suite.

Les deux fichiers HTML sont ceux que ce tutoriel ouvre ensuite ; la procédure ci-dessous commence donc par emailable-report.html.

Comment générer des rapports dans Selenium

Méthode 1 : emailable-report.html

  1. Cliquez sur l'option « emailable-report.html »
  2. Cliquez sur l'option navigateur Web

La capture d'écran ci-dessous montre l'ouverture du fichier emailable-report.html depuis le dossier test-output.

Sélectionner emailable-report.html à l'intérieur du TestNG dossier de sortie de test

Les rapports de sortie dans TestNG le rapport ressemblera à ci-dessous si les deux cours sont réussis :

TestNG Rapport envoyable par courriel indiquant la réussite des classes de test DemoA et DemoB

Considérez le scénario dans lequel vous échouez intentionnellement au scénario de test, c'est-à-dire la classe DemoB. Convertissez ensuite les deux classes en fichier de suite testng.xml et exécutez-le. Ensuite, le résultat ressemblera à ceci. Il montrera le cas de test ayant échoué.

Voici le résultat pour la classe DemoB :

Rapport envoyable par courriel mettant en évidence le cas de test DemoB intentionnellement échoué

De même, le résultat de la classe DemoA ressemblera à ceci :

Ligne récapitulative du rapport envoyable par courriel pour la classe DemoA réussie

Méthode 2 : index.html

  1. Faites un clic droit sur index.html dans le répertoire du projet.
  2. Sélectionnez l’option Ouvrir avec l’option du navigateur Web. Il affichera le résultat dans l’ordre suivant.

La capture d'écran ci-dessous montre l'ouverture du fichier index.html depuis le répertoire du projet.

Ouvrir le fichier index.html du répertoire du projet dans un navigateur web

Le résultat ressemblera à ceci:

TestNG page d'accueil du rapport index.html listant les vues des résultats d'exécution

Méthode 3 : classe de journaliste

Parallèlement à ces TestNG méthodes générées par les rapports, vous pouvez utiliser le fichier object.properties pour stocker les journaux générés par le système ainsi que les journaux générés par l'utilisateur. Mais l'un des moyens les plus simples de stocker les informations de journalisation lors des tests consiste à utiliser Classe de journaliste.

Reporter.se connecter Selenium est une classe présente dans TestNG pour Selenium rapport. Il propose 4 méthodes différentes pour stocker les informations du journal :

  1. Reporter.log(String s);
  2. Reporter.log(String s, Boolean logToStandardOut);
  3. Reporter.log (String s, niveau int);
  4. Reporter.log(String s, niveau int, Boolean logToStandardOut) ;

Le deuxième argument détermine si le message est également affiché dans le rapport et dans la console, tandis que l'argument « level » contrôle le niveau de verbosité du message.

Exemple:

Créez deux classes telles que DemoA et DemoB et écrivez le code suivant dans les classes.

Pour la classe DémoA ;

  • Le Code Le fonctionnement de DemoA a déjà été expliqué ci-dessus. Ici, vous utilisez méthode log de la classe Reporter. (Pour implémenter votre propre classe de reporting, celle-ci doit implémenter l'interface org.testng.IReporter.)
  • La méthode log est une méthode statique de la classe Reporter. Vous accédez donc à cette méthode via la classe Reporter.
  • La méthode log est utilisée pour stocker les informations de journal écrites dans le programme. En consultant les informations du journal, vous saurez facilement où exactement l'exécution du programme est arrêtée.

La capture d'écran ci-dessous montre les appels Reporter.log placés à l'intérieur de la classe DemoA.

Instructions Reporter.log écrites dans la classe de test DemoA

Pour la démo de classe :

Instructions Reporter.log écrites dans la classe de test DemoB

  • Maintenant, créez le fichier testng.xml en sélectionnant ces deux classes et
  • Sélectionnez exécuter comme et
  • Cliquez sur convertir en test.
  • Exécutez ensuite ce fichier testng.xml en sélectionnant exécuter en tant que et en sélectionnant la suite testng.
  • Actualisez ensuite le projet et ouvrez le dossier test-output.
  1. Dans le dossier test-output, ouvrez le fichier emailable-report.html. Cela ressemblera à :

    Rapport envoyable par e-mail généré après l'exécution de la suite de tests DemoA et DemoB testng.xml

    De même, vous aurez également un projet Output for Demo B.

  2. Dans le dossier test-output, ouvrez le fichier index.html. Il ressemblera à ceci :

    Le rapport index.html a été généré après l'exécution de la suite de tests testng.xml.

Cliquez sur la sortie du journaliste. Il ouvrira les informations de journalisation, quelles que soient les informations écrites dans les méthodes de test.

TestNG Vue de sortie du rapporteur listant les messages enregistrés par les méthodes de test

Cliquez sur les horaires. Cela montrera combien de temps il a fallu pour exécuter la méthode de test présente en classe en utilisant TestNG outils de reporting.

TestNG Vue temporelle indiquant la durée d'exécution de chaque méthode de test.

Comment personnaliser TestNG Rapports avec ITestListener et IReporter

Les trois méthodes ci-dessus utilisent ce que TestNG produit par défaut. Lorsqu'une équipe a besoin d'une mise en page différente, de champs supplémentaires ou d'une vue de progression en direct, TestNG expose deux points d'extension au lieu de vous demander de corriger le rapport par défaut.

  • ITestListener Vous recevez des notifications en temps réel à chaque début, réussite, échec ou omission de test. Utilisez cette fonction lorsque l'information doit être capturée au moment précis où l'événement se produit — une capture d'écran en cas d'échec, par exemple.
  • I Reporter Une notification est envoyée une fois par séquence, après chaque exécution, et les objets reçus décrivent l'ensemble du processus. Utilisez cette fonction lorsque le résultat est un document final, tel qu'un PDF ou une page HTML personnalisée.

Voici à quoi ressemble un écouteur qui transmet chaque résultat au rapport via la classe Reporter.

import org.testng.ITestListener;
import org.testng.ITestResult;
import org.testng.Reporter;

public class ReportListener implements ITestListener {

    @Override
    public void onTestSuccess(ITestResult result) {
        Reporter.log("PASSED: " + result.getName(), true);
    }

    @Override
    public void onTestFailure(ITestResult result) {
        Reporter.log("FAILED: " + result.getName(), true);
    }

    @Override
    public void onTestSkipped(ITestResult result) {
        Reporter.log("SKIPPED: " + result.getName(), true);
    }
}

L'enregistrement de l'écouteur se fait dans le même fichier de suite testng.xml que vous avez déjà créé pour DemoA et DemoB.

<suite name="Demo Suite">
  <listeners>
    <listener class-name="ReportListener" />
  </listeners>
  <test name="Demo Test">
    <classes>
      <class name="DemoA" />
      <class name="DemoB" />
    </classes>
  </test>
</suite>

Il est utile de connaître deux options de ligne de commande lors de vos expérimentations. -d Cette option modifie le répertoire dans lequel les rapports sont écrits, et -usedefaultlisteners faux désactive les rapporteurs intégrés afin que seul votre propre écouteur soit actif. Ces deux options sont décrites dans la documentation officielle. TestNG documentation relative à la journalisation et aux résultats, qui documente également les propriétés acceptées par le rapporteur XML intégré.

Un écouteur est enregistré une seule fois et s'applique ensuite à chaque classe de la suite, ce qui explique pourquoi les équipes qui gèrent de grandes quantités de données ont besoin de cet écouteur. tests d'automatisation Les suites de tests préfèrent généralement cette méthode à l'ajout manuel de lignes de journalisation à chaque méthode de test.

TestNG Rapports par défaut vs ExtentReports vs Allure

Les rapports par défaut suffisent pour une petite suite logicielle, mais ils ne contiennent ni historique ni graphiques. Deux bibliothèques open source sont généralement ajoutées lorsque la suite logicielle s'étoffe, et toutes deux sont compatibles avec TestNG.

Capability TestNG défaut Rapports d'étendue Rapport d'attrait
effort de mise en place Aucun — produit automatiquement Ajoutez la bibliothèque et écrivez le code du rapporteur Ajoutez l'adaptateur, puis générez le rapport à partir des résultats.
Graphiques et tableaux de bord Non Oui Oui
Captures d'écran Uniquement via le balisage Reporter.log API de pièces jointes intégrée API de pièces jointes intégrée
Historique et tendances de la course Non Par le biais du composant serveur optionnel Oui, à partir des résultats précédents enregistrés
Couverture du cadre TestNG uniquement Java et .NET Cadre agnostique

Commencez par les rapports par défaut tant que la suite est réduite. Passez ensuite à Rapports d'étendue lorsque les parties prenantes demandent des tableaux de bord lisibles, et pour Rapport d'attrait lorsque l'historique des tests instables entre les différentes versions devient la question cruciale. Quel que soit votre choix, le rapport est généralement publié par la tâche de compilation, comme expliqué dans la documentation. Jenkins intégration continue tutoriel.

FAQ

Le dossier n'apparaît qu'après TestNG L'exécution se termine et le projet est actualisé dans l'IDE. Un dossier vide signifie généralement que la classe a été lancée en mode simple. Java L'application ou les écouteurs par défaut étaient désactivés, donc aucun rapporteur n'a jamais été exécuté.

Oui. TestNG Par défaut, les résultats sont écrits dans le répertoire de sortie de test. Vous pouvez spécifier ce répertoire en ajoutant l'option `-d` à la ligne de commande ou en définissant le répertoire de sortie dans la configuration d'exécution de l'IDE ou dans les paramètres Maven Surefire qui lancent la suite de tests.

Capturez l'image dans une méthode d'écoute comme `onTestFailure`, enregistrez le fichier à côté du rapport, puis insérez une balise HTML `<img>` via `Reporter.log`. Le rapport interprétera le balisage, et l'image apparaîtra ainsi à côté de la méthode ayant échoué.

TestNG Elle-même n'envoie pas de courriel. Les équipes joignent généralement le fichier emailable-report.html depuis une tâche de compilation, par exemple un Jenkins Étape d'envoi d'e-mail après la compilation, ou ajoutez une petite routine de messagerie dans une implémentation IReporter.

Les modèles d'IA regroupent les défaillances par pile.tracEn comparant les similitudes, on distingue les défauts réels des défaillances liées à l'environnement ou au timing, et on établit un ordre de priorité pour l'inspection des méthodes défaillantes. Une longue liste de rapports à envoyer par courriel se transforme ainsi en une courte file d'attente priorisée pour l'équipe.

Copilote GitHub peut générer des classes d'écouteurs, des instructions Reporter.log et des entrées testng.xml à partir d'un court commentaire. RevExaminez chaque suggestion, car les écouteurs générés ne correspondent souvent pas exactement aux méthodes d'interface. TestNG attend.

Une fois un IRetryAnalyzer connecté, chaque tentative est enregistrée avec le résultat final. Le rapport par défaut affiche donc chaque tentative ; un test instable peut ainsi apparaître à la fois comme un échec et une réussite au cours d'une même exécution.

Ajoutez l'option `-usedefaultlisteners false` à la ligne de commande, ou définissez `useDefaultListeners` sur `false` dans la configuration Maven Surefire ou Ant. Seuls les rapporteurs que vous avez explicitement enregistrés seront exécutés, ce qui raccourcit le temps d'exécution pour les suites très volumineuses.

Résumez cet article avec :