TestNG Berichterstellung in Selenium: Wie generiert man?

โšก Intelligente Zusammenfassung

TestNG Berichte sind die standardmรครŸigen HTML-Ergebnisdateien, die TestNG Schreibt nach jedem Durchlauf in den Ordner test-output, welche Testfรคlle bestanden, fehlgeschlagen oder รผbersprungen wurden, sowie alle Reporter-Protokolle.

  • ๐Ÿ”˜ Standardausgabe: Jede TestNG Der Befehl โ€žrunโ€œ erstellt ohne zusรคtzlichen Code einen Testausgabeordner.
  • โ˜‘๏ธ Zwei HTML-Ansichten: emailable-report.html fasst die Ergebnisse zusammen, index.html verlinkt zu den detaillierten Ansichten.
  • โœ… Reporterprotokolle: Reporter.log() schreibt benutzerdefinierte Meldungen direkt in den generierten Bericht.
  • ๐Ÿงช Suite lรคuft: Die Ausfรผhrung von testng.xml gruppiert mehrere Klassen zu einem einzigen konsolidierten Bericht.
  • ๏ธ Anpassung: Mit ITestListener und IReporter kann ein Team sein eigenes Berichtsformat erstellen.
  • ๐Ÿ“Š รœber die Standardeinstellungen hinaus: ExtentReports und Allure bieten zusรคtzlich Diagramme, Verlaufsdaten und die Mรถglichkeit, Screenshots anzuhรคngen.

TestNG Berichtsgenerierung in Selenium

Was sind TestNG Berichte?

TestNG Reports sind die Standard-HTML-Berichte, die generiert werden, sobald die Testfรคlle mit ausgefรผhrt werden TestNG. Mithilfe dieser Berichte kรถnnen Sie Informationen zu Testfรคllen und zum Status eines Projekts ermitteln. TestNG Berichte in Selenium Fรผr jede Testmethode sollten drei Ergebnisse protokolliert werden โ€“ bestanden, nicht bestanden und รผbersprungen โ€“, damit die Daten zu den Testfรคllen auf einen Blick erfasst werden kรถnnen.

Die Berichterstellung ist sowohl bei der Durchfรผhrung automatisierter Tests als auch bei manuellen Tests sehr wichtig.

  • Anhand des Ergebnisses kรถnnen Sie leicht erkennen, wie viele Testfรคlle bestanden, fehlgeschlagen und รผbersprungen wurden.
  • Wenn Sie sich den Bericht ansehen, erfahren Sie, wie der Status des Projekts ist.

Selenium WebDriver wird zur Automatisierung der Webanwendung verwendet, generiert aber selbst keine Berichte.

  • Das TestNG generiert den Standardbericht.
  • Wenn Sie die testng.xml-Datei ausfรผhren und das Projekt aktualisieren, erhalten Sie einen Ordner namens โ€žtest-outputโ€œ, der die Berichtsausgabe enthรคlt. TestNG.
  • Klicken Sie mit der rechten Maustaste auf die Datei emailable-report.html und wรคhlen Sie die Option โ€žMit Webbrowser รถffnenโ€œ.

Hinweis: Das hier beschriebene Verhalten bleibt unverรคndert in TestNG 7.x. Releases von TestNG Ab Version 7.6 ist JDK 11 oder hรถher erforderlich. Bei รคlteren Projekten muss daher mรถglicherweise die JDK-Version erhรถht werden, bevor die Berichte erstellt werden kรถnnen.

Arten von TestNG Berichte im Ordner โ€žtest-outputโ€œ

Bevor man eine einzelne Datei รถffnet, ist es hilfreich zu wissen, was der Test-Ausgabeordner tatsรคchlich enthรคlt. TestNG Er schreibt bei jedem Durchlauf mehrere Artefakte, und jedes einzelne beantwortet eine andere Frage.

Datei oder Ordner Was es enthรคlt Wann es nรผtzlich ist
index.html Der Landingpage-Bericht, der Links zu den Ergebnissen, Gruppen, Zeiten und Reporter-Ausgabeansichten enthรคlt. Eine detaillierte Analyse eines Laufs.
emailable-report.html Eine einzige, in sich abgeschlossene Seite, die die erfolgreichen, fehlgeschlagenen und รผbersprungenen Methoden pro Klasse zusammenfasst. Ein Ergebnis mit Personen teilen, die das Projekt nicht รถffnen.
testng-results.xml Der vom integrierten XML-Reporter erstellte maschinenlesbare XML-Code enthรคlt Status und Dauer pro Methode. Ein Dashboard oder einen benutzerdefinierten Parser mit Daten versorgen.
junitreports JUnit-Format XML-Dateien, eine pro Testklasse. Jedes CI-Plug-in, das die JUnit Ergebnisformat.
testng-failed.xml Eine generierte Suite-Datei, die nur die fehlgeschlagenen Methoden auflistet. Nur die fehlgeschlagenen Tests erneut ausfรผhren, anstatt die gesamte Testsuite.

Die beiden HTML-Dateien sind diejenigen, die dieses Tutorial als nรคchstes รถffnet, daher beginnt die folgende Anleitung mit emailable-report.html.

So erstellen Sie Berichte in Selenium

Methode 1: emailable-report.html

  1. Klicken Sie auf die Option โ€žemailable-report.htmlโ€œ.
  2. Klicken Sie auf die Option Webbrowser

Der folgende Screenshot zeigt, wie die Datei emailable-report.html aus dem Ordner test-output geรถffnet wird.

Auswahl von emailable-report.html innerhalb des TestNG test-output-Ordner

Die Ausgabe meldet TestNG Wenn beide Klassen bestanden werden, sieht die Berichterstattung wie folgt aus:

TestNG Per E-Mail versendbarer Bericht, der die bestandenen Testklassen DemoA und DemoB anzeigt.

Stellen Sie sich das Szenario vor, in dem Sie den Testfall, d. h. die Klasse DemoB, absichtlich scheitern lassen. Konvertieren Sie dann beide Klassen in die Suite-Datei testng.xml und fรผhren Sie sie aus. Dann sieht das Ergebnis so aus. Es zeigt das fehlgeschlagene Testfรคlle.

Dies ist das Ergebnis fรผr die DemoB-Klasse:

Per E-Mail versendbarer Bericht, der den absichtlich fehlgeschlagenen DemoB-Testfall hervorhebt

ร„hnlich sieht das Ergebnis fรผr die Klasse DemoA so aus:

Zusammenfassungszeile des per E-Mail versendbaren Berichts fรผr die bestandene DemoA-Klasse

Methode 2: index.html

  1. Klicken Sie im Projektverzeichnis mit der rechten Maustaste auf index.html.
  2. Wรคhlen Sie die Option โ€žMit Webbrowser รถffnenโ€œ. Das Ergebnis wird in der folgenden Reihenfolge angezeigt.

Der folgende Screenshot zeigt, wie die Datei index.html aus dem Projektverzeichnis geรถffnet wird.

ร–ffnen der Datei index.html aus dem Projektverzeichnis in einem Webbrowser

Das Ergebnis sieht dann so aus:

TestNG index.html Bericht-Landingpage mit Auflistung der Laufergebnisse

Methode 3: Reporterklasse

Zusammen mit diesen TestNG Mithilfe generierter Berichtsmethoden kรถnnen Sie die Datei โ€žobject.propertiesโ€œ verwenden, um die vom System generierten Protokolle sowie die vom Benutzer generierten Protokolle zu speichern. Eine der einfachsten Mรถglichkeiten zum Speichern von Protokollinformationen beim Testen ist jedoch die Verwendung von Reporterklasse.

Reporter.einloggen Selenium ist eine Klasse, die in vorhanden ist TestNG fรผr Selenium Berichterstattung. Es bietet vier verschiedene Methoden zum Speichern von Protokollinformationen:

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

Das zweite Argument bestimmt, ob die Meldung zusรคtzlich zum Bericht auch in der Konsole angezeigt wird, und das Argument โ€žlevelโ€œ steuert den Ausfรผhrlichkeitsgrad der Meldung.

Beispiel:

Erstellen Sie zwei Klassen wie DemoA und DemoB und schreiben Sie den folgenden Code in die Klassen.

Fรผr Klasse DemoA;

  • Das Code Die Erklรคrung fรผr DemoA erfolgte bereits oben. Hier verwenden Sie Protokollmethode der Reporter-Klasse. (Um eine eigene Reporting-Klasse zu implementieren, muss die Klasse die Schnittstelle org.testng.IReporter implementieren.)
  • Die Protokollmethode ist eine statische Methode der Reporter-Klasse. Sie greifen also รผber die Reporter-Klasse auf diese Methode zu.
  • Die Protokollmethode wird zum Speichern von Protokollinformationen verwendet, die in das Programm geschrieben werden. Anhand der Protokollinformationen kรถnnen Sie leicht erkennen, wo genau die Ausfรผhrung des Programms gestoppt wird.

Der folgende Screenshot zeigt die Reporter.log-Aufrufe innerhalb der DemoA-Klasse.

Reporter.log-Anweisungen, die innerhalb der DemoA-Testklasse geschrieben wurden

Fรผr Klasse DemoB:

Reporter.log-Anweisungen, die innerhalb der DemoB-Testklasse geschrieben wurden

  • Erstellen Sie nun die Datei testng.xml, indem Sie diese beiden Klassen auswรคhlen und
  • Wรคhlen Sie Ausfรผhren als und
  • Klicken Sie auf โ€žIn Testng konvertierenโ€œ.
  • Fรผhren Sie dann diese Datei testng.xml aus, indem Sie โ€žAusfรผhren alsโ€œ auswรคhlen und die Testng-Suite auswรคhlen.
  • Aktualisieren Sie dann das Projekt und รถffnen Sie den Testausgabeordner.
  1. ร–ffnen Sie im Ordner โ€žtest-outputโ€œ die Datei โ€žemailable-report.htmlโ€œ. Sie sieht folgendermaรŸen aus:

    Nach Ausfรผhrung der testng.xml-Suite DemoA und DemoB wurde ein per E-Mail versandbarer Bericht erstellt.

    Ebenso verfรผgen Sie รผber eine Ausgabe fรผr das Demo-B-Projekt.

  2. ร–ffnen Sie im Ordner โ€žtest-outputโ€œ die Datei โ€žindex.htmlโ€œ. Sie sieht folgendermaรŸen aus:

    Die Datei index.html wurde nach dem Ausfรผhren der Testumgebung testng.xml erstellt.

Klicken Sie auf Reporterausgabe. Es werden Protokollierungsinformationen geรถffnet, unabhรคngig davon, was in den Testmethoden angegeben ist.

TestNG Reporterausgabeansicht mit Auflistung der von den Testmethoden protokollierten Meldungen

Klicken Sie auf die Zeiten. Es wird angezeigt, wie viel Zeit es gedauert hat, die in der Klasse vorhandene Testmethode auszufรผhren TestNG Reporting-Tools.

TestNG Zeitansicht mit Anzeige der Laufzeit der einzelnen Testmethoden

So passen Sie an TestNG Berichte mit ITestListener und IReporter

Die drei oben genannten Methoden verwenden jeweils beliebiges TestNG Wird standardmรครŸig erstellt. Wenn ein Team ein anderes Layout, zusรคtzliche Felder oder eine Live-Fortschrittsanzeige benรถtigt, TestNG Es werden zwei Erweiterungspunkte bereitgestellt, anstatt Sie aufzufordern, den Standardbericht zu patchen.

  • ITestListener Sie werden in Echtzeit benachrichtigt, sobald ein Test startet, erfolgreich ist, fehlschlรคgt oder รผbersprungen wird. Nutzen Sie diese Funktion, wenn die Informationen im Moment des Ereignisses erfasst werden mรผssen โ€“ beispielsweise ein Screenshot im Fehlerfall.
  • Reporter Die Funktion wird einmalig nach Abschluss jeder Suite benachrichtigt und empfรคngt Objekte, die den gesamten Durchlauf beschreiben. Verwenden Sie sie, wenn das Ergebnis ein fertiges Dokument ist, z. B. eine PDF-Datei oder eine benutzerdefinierte HTML-Seite.

Ein Listener, der jedes Ergebnis รผber die Reporter-Klasse in den Bericht einfรผgt, sieht folgendermaรŸen aus.

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

Die Registrierung des Listeners erfolgt in derselben testng.xml Suite-Datei, die Sie bereits fรผr DemoA und DemoB erstellt haben.

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

Zwei Befehlszeilenoptionen sind beim Experimentieren hilfreich. -d Diese Option รคndert das Verzeichnis, in das die Berichte geschrieben werden, und -usedefaultlisteners false Die integrierten Reporter werden deaktiviert, sodass nur Ihr eigener Listener ausgefรผhrt wird. Beides wird in der offiziellen Dokumentation beschrieben. TestNG Protokollierung und Ergebnisdokumentation, welche auch die vom integrierten XML-Reporter akzeptierten Eigenschaften dokumentiert.

Ein Listener wird einmal registriert und gilt dann fรผr jede Klasse in der Suite. Aus diesem Grund verwenden Teams, die groรŸe Klassen ausfรผhren, diese Methode. Automatisierungstests Testsuiten bevorzugen dies in der Regel gegenรผber dem manuellen Hinzufรผgen von Logzeilen zu jeder Testmethode.

TestNG Standardberichte vs. ExtentReports vs. Allure

Die Standardberichte reichen fรผr eine kleine Suite aus, enthalten aber weder Verlaufsdaten noch Diagramme. Bei grรถรŸeren Suiten werden รผblicherweise zwei Open-Source-Bibliotheken hinzugefรผgt, die beide mit โ€ฆ kompatibel sind. TestNG.

Capability TestNG Standard ExtentReports Allure-Bericht
Einrichtungsaufwand Keine โ€“ automatisch erzeugt Fรผgen Sie die Bibliothek hinzu und schreiben Sie den Reportercode. Fรผgen Sie den Adapter hinzu und generieren Sie anschlieรŸend den Bericht aus den Ergebnissen.
Diagramme und Dashboards Nein Ja Ja
Screenshots Nur รผber Reporter.log-Markup Integrierte Anhang-API Integrierte Anhang-API
Verlauf und Trends Nein รœber die optionale Serverkomponente Ja, aus gespeicherten vorherigen Ergebnissen
Rahmenabdeckung TestNG einzige Java und .NET Framework-unabhรคngig

Beginnen Sie mit den Standardberichten, solange die Berichtssuite noch klein ist. Wechseln Sie zu ExtentReports wenn Stakeholder รผbersichtliche Dashboards fordern, und um Allure-Bericht Wenn die Historie fehlerhafter Tests รผber verschiedene Builds hinweg zum entscheidenden Faktor wird. Unabhรคngig von der gewรคhlten Methode wird der Bericht normalerweise vom Build-Job verรถffentlicht, der im Abschnitt โ€žโ€ฆโ€œ behandelt wird. Jenkins kontinuierliche integration Tutorial.

Hรคufig gestellte Fragen

Der Ordner erscheint erst nach TestNG Nach Abschluss eines Durchlaufs wird das Projekt in der IDE aktualisiert. Ein leerer Ordner bedeutet in der Regel, dass die Klasse als einfache Datei gestartet wurde. Java Entweder war die Anwendung deaktiviert oder die Standard-Listener waren ausgeschaltet, sodass kein Reporter ausgefรผhrt wurde.

Ja. TestNG Schreibt standardmรครŸig in das Verzeichnis test-output. Verwenden Sie die Option -d in der Befehlszeile oder legen Sie das Ausgabeverzeichnis in der IDE-Ausfรผhrungskonfiguration oder in den Maven Surefire-Einstellungen fest, die die Testsuite starten.

Erfassen Sie das Bild innerhalb einer Listener-Methode wie `onTestFailure`, speichern Sie die Datei neben dem Bericht und fรผgen Sie anschlieรŸend รผber `Reporter.log` ein HTML-Bild-Tag ein. Der Bericht rendert das Markup, sodass das Bild neben der fehlgeschlagenen Methode angezeigt wird.

TestNG Das Programm selbst versendet keine E-Mails. Teams hรคngen normalerweise die Datei emailable-report.html von einem Build-Job an, zum Beispiel von einem Jenkins Nach dem Build eine E-Mail senden oder eine kleine E-Mail-Routine in eine IReporter-Implementierung einfรผgen.

KI-Modelle gruppieren Fehler nach Stapel-tracร„hnlichkeiten erkennen, echte Defekte von umgebungs- oder zeitbedingten Fehlern unterscheiden und die zu รผberprรผfenden Fehlermethoden priorisieren. Aus einer langen Liste von Berichten, die per E-Mail versendet werden kรถnnen, wird eine kurze, priorisierte Warteschlange fรผr das Team.

GitHub-Copilot Aus einem kurzen Kommentar lassen sich Listener-Klassen, Reporter.log-Anweisungen und testng.xml-Eintrรคge generieren. RevPrรผfen Sie jeden Vorschlag, da generierte Listener oft die exakten Schnittstellenmethoden nicht korrekt wiedergeben. TestNG erwartet.

Sobald ein IRetryAnalyzer angehรคngt ist, wird jeder Wiederholungsversuch zusammen mit dem Endergebnis protokolliert. Der Standardbericht zeigt daher jeden Versuch an, sodass ein instabiler Test im selben Durchlauf sowohl als Fehlschlag als auch als Erfolg erscheinen kann.

รœbergeben Sie `-usedefaultlisteners false` in der Befehlszeile oder setzen Sie `useDefaultListeners` in der Maven Surefire- oder Ant-Konfiguration auf `false`. Es werden dann nur die explizit registrierten Reporter ausgefรผhrt, was die Laufzeit bei sehr groรŸen Testreihen verkรผrzt.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: