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.
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
- Klicken Sie auf die Option โemailable-report.htmlโ.
- Klicken Sie auf die Option Webbrowser
Der folgende Screenshot zeigt, wie die Datei emailable-report.html aus dem Ordner test-output geรถffnet wird.
Die Ausgabe meldet TestNG Wenn beide Klassen bestanden werden, sieht die Berichterstattung wie folgt aus:
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:
รhnlich sieht das Ergebnis fรผr die Klasse DemoA so aus:
Methode 2: index.html
- Klicken Sie im Projektverzeichnis mit der rechten Maustaste auf index.html.
- 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.
Das Ergebnis sieht dann so aus:
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:
- Reporter.log(String s);
- Reporter.log(String s, Boolean logToStandardOut);
- Reporter.log(String s, int level);
- 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.
Fรผr Klasse DemoB:
- 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.
- รffnen Sie im Ordner โtest-outputโ die Datei โemailable-report.htmlโ. Sie sieht folgendermaรen aus:
Ebenso verfรผgen Sie รผber eine Ausgabe fรผr das Demo-B-Projekt.
- รffnen Sie im Ordner โtest-outputโ die Datei โindex.htmlโ. Sie sieht folgendermaรen aus:
Klicken Sie auf Reporterausgabe. Es werden Protokollierungsinformationen geรถffnet, unabhรคngig davon, was in den Testmethoden angegeben ist.
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.
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.












