Pytest HTML-Bericht: Erstellen und Anpassen umfassender Testberichte

Foto des Autors

By Jan

Pytest-HTML-Bericht erstellen

Die Erstellung eines Pytest-HTML-Berichts ist einfach und erfordert nur wenige Schritte. Dieser Bericht bietet eine übersichtliche und informative Darstellung deiner Testergebnisse.

Voraussetzungen

  • Installiere Pytest, wenn du es noch nicht installiert hast.
  • Schreibe deine Testfälle in Python-Dateien.

Schritt 1: HTML-Bericht aktivieren

Füge die folgenden Zeilen zu deiner pytest.ini-Datei hinzu:

[pytest]
htmlpath=test_report.html
  • htmlpath legt den Pfad und den Dateinamen des HTML-Berichts fest.

Schritt 2: Tests ausführen

Führe deine Tests mit dem folgenden Befehl aus:

pytest --html=test_report.html
  • Der Befehl erzeugt den HTML-Bericht in dem angegebenen Pfad.

Schritt 3: Bericht anzeigen

Öffne den erstellten HTML-Bericht in deinem Browser. Der Bericht enthält:

  • Eine Zusammenfassung deiner Testergebnisse
  • Details zu bestandenen und fehlgeschlagenen Tests
  • Stacktraces für fehlgeschlagene Tests
  • Diagramme, die die Testergebnisse visualisieren

Berichtformate verstehen: HTML und JUnit XML

Pytest bietet dir zwei Hauptformate für Testberichte an: HTML und JUnit XML. Jedes Format hat seine eigenen Vor- und Nachteile, abhängig von deinen spezifischen Anforderungen.

HTML-Bericht

Der HTML-Bericht ist ein umfassender, benutzerfreundlicher Bericht, der Folgendes bietet:

  • Interaktive Ergebnisse: Navigiere einfach durch Testfälle, um Details zu Anzeigen, Fehlern und Aufrufen anzuzeigen.
  • Umfangreiche Formatierung: Hebe wichtige Informationen wie Bestanden/Durchgefallen hervor und markiere Protokolle mit Farben.
  • Anpassbarer Umfang: Füge benutzerdefinierte Kopf- und Fußzeilen hinzu und deaktiviere bestimmte Abschnitte wie stdout/stderr.

JUnit XML-Bericht

Im Gegensatz zum HTML-Bericht ist der JUnit XML-Bericht ein maschinenlesbares Format, das von verschiedenen CI/CD-Tools und Berichterstattungstools unterstützt wird:

  • Standardisierte Ausgabe: Unterstützt die Integration mit Jenkins, CircleCI und anderen gängigen CI/CD-Systemen.
  • Einfach zu parsen: Kann von Reporting-Tools wie SonarQube verwendet werden, um erweiterte Metriken und Analysen bereitzustellen.
  • Zusätzliche Funktionen: Ermöglicht die Erfassung von Statistiken, benutzerdefinierten Feldern und Anhängen.

Bericht anpassen: Konfigurieren des HTML-Berichts

Nachdem du den Pytest-HTML-Bericht erstellt hast, kannst du sein Erscheinungsbild und Verhalten nach deinen Wünschen anpassen.

Berichtformat konfigurieren

Du kannst zwischen zwei Berichtformaten wählen:

  • HTML: Generiert einen leicht lesbaren HTML-Bericht mit detaillierten Testergebnissen.
  • JUnit XML: Generiert einen XML-Bericht, der mit JUnit-Tools wie Jenkins kompatibel ist.

Um das Berichtformat zu konfigurieren, verwende die Option --format. Beispielsweise:

pytest --html=report.html

Berichtinhalt anpassen

Du kannst den Inhalt des HTML-Berichts anpassen, indem du Plugins verwendest. Plugins können zusätzliche Funktionen wie:

  • screenshots: Aufnahme von Screenshots bei Testfehlern
  • allure: Integration mit Allure TestOps, einer Plattform für Testberichterstellung
  • rerunfailures: Möglichkeit zum erneuten Ausführen fehlgeschlagener Tests

Um Plugins zu installieren und zu verwenden, verwende pip:

pip install pytest-allure

Berichtlayout anpassen

Du kannst das Layout des HTML-Berichts mithilfe der folgenden Optionen anpassen:

  • title: Der Titel des Berichts
  • description: Eine Beschreibung des Testlaufs
  • theme: Das Farbschema des Berichts
  • style: Der HTML-Stil des Berichts

Du kannst diese Optionen über die Befehlszeile oder die pytest.ini-Konfigurationsdatei konfigurieren. Beispielsweise:

pytest --html=report.html --title="Meine Projekttests"

Berichtansicht anpassen

Du kannst die Ansicht des HTML-Berichts anpassen, indem du die folgenden Optionen verwendest:

  • tree_style: Die Art und Weise, wie Testeinheiten im Bericht angezeigt werden
  • order_by: Die Sortierreihenfolge der Testeinheiten
  • show_full_path: Anzeige des vollständigen Pfads von Testmodulen und -klassen

Du kannst diese Optionen über die Befehlszeile oder die pytest.ini-Konfigurationsdatei konfigurieren. Beispielsweise:

pytest --html=report.html --tree_style=folder --order_by=name

Bericht ansehen: Interpretieren der Testergebnisse

Sobald du deinen Pytest-HTML-Bericht generiert hast, kannst du ihn öffnen und deine Testergebnisse interpretieren. Der Bericht enthält umfassende Informationen, die dir helfen, den Erfolg oder Misserfolg deiner Tests zu verstehen.

Zusammenfassung des Berichts

Der HTML-Bericht beginnt mit einer Zusammenfassung deines Tests. Diese enthält die folgenden wichtigsten Metriken:

  • Gesamtanzahl der Tests: Die Gesamtzahl der ausgeführten Tests.
  • Bestandene Tests: Die Anzahl der Tests, die ohne Ausfälle ausgeführt wurden.
  • Fehlgeschlagene Tests: Die Anzahl der Tests, die nicht mit dem erwarteten Ergebnis ausgeführt wurden.
  • Übersprungene Tests: Die Anzahl der Tests, die absichtlich nicht ausgeführt wurden.

Detaillierte Testinformationen

Unter der Zusammenfassung findest du detaillierte Informationen zu jedem Testfall. Für jeden Testfall enthält der Bericht die folgenden Informationen:

  • Testname: Der Name des Tests.
  • Teststatus: Bestanden, fehlgeschlagen oder übersprungen.
  • Dauer: Die Zeit, die der Test für die Ausführung benötigt hat.
  • Protokoll: Jede Ausgabe oder Fehlermeldung, die während der Ausführung des Tests generiert wurde.
  • Abschnitt: Der Name des Moduls oder Pakets, zu dem der Test gehört.

Fehlgeschlagene Tests untersuchen

Wenn ein Test fehlschlägt, enthält der Bericht eine detaillierte Fehlermeldung. Diese Meldung kann dir helfen, die Ursache des Fehlers zu ermitteln und ihn zu beheben. Die Fehlermeldung enthält möglicherweise:

  • Rückgabewert: Der tatsächliche Rückgabewert des Tests.
  • Erwarteter Wert: Der erwartete Rückgabewert des Tests.
  • Traceback: Eine Traceback-Informationen, die zeigt, wo der Fehler aufgetreten ist.

Bestanden und übersprungen Tests verstehen

Neben fehlgeschlagenen Tests enthält der Bericht auch Informationen zu bestandenen und übersprungenen Tests. Bestandene Tests sind Tests, die mit dem erwarteten Ergebnis ausgeführt wurden. Übersprungene Tests sind Tests, die absichtlich nicht ausgeführt wurden. Du kannst die Gründe für das Überspringen eines Tests im Protokoll des Testfalls finden.

Erweiterungen und Plugins für HTML-Berichte

Neben den Standardfunktionen des Pytest-HTML-Berichts kannst du Erweiterungen und Plugins verwenden, um seine Funktionalität zu erweitern und die Berichterstellung an deine spezifischen Anforderungen anzupassen.

Allure-Plugin

Das Allure-Plugin bietet eine umfassende Berichtslösung für Testfälle, die eine detaillierte Visualisierung und Analyse der Testergebnisse ermöglicht. Es bietet Unterstützung für verschiedene Berichtstypen, einschließlich HTML, JUnit XML und PDF.

pytest-html-reporter

Mit dem pytest-html-reporter kannst du den HTML-Bericht mit zusätzlichen Features wie Live-Aktualisierung, Suchleiste und anpassbaren Stilen erweitern.

pytest-xdist-html

Das pytest-xdist-html Plugin verbessert die Berichterstellung bei Verwendung von verteilten Tests durch das pytest-xdist Plugin. Es liefert einen aggregierten HTML-Bericht, der Ergebnisse von mehreren Testläufen auf verschiedenen Hosts enthält.

Anpassen mit Plugins

Diese Plugins ermöglichen es dir, den HTML-Bericht an deine Bedürfnisse anzupassen. Du kannst beispielsweise eigene Formatter erstellen, um die Ausgabe zu steuern, oder benutzerdefinierte Widgets hinzufügen, um die Berichterstattung zu erweitern.

Fazit

Erweiterungen und Plugins ermöglichen es dir, den Pytest-HTML-Bericht zu erweitern und auf deine spezifischen Anforderungen zuzuschneiden. Sie bieten erweiterte Funktionen, Visualisierungen und Anpassungsmöglichkeiten, um die Berichterstellung zu verbessern und die Analyse und Interpretation der Testergebnisse zu vereinfachen.

Integration mit CI/CD-Tools

Die Integration des Pytest-HTML-Berichts in deine CI/CD-Pipeline bietet zahlreiche Vorteile. Du kannst die Testergebnisse automatisieren, zentralisieren und visualisieren, um eine kontinuierliche Lieferung und Integration zu ermöglichen.

Vorteile der Integration

  • Automatisierte Berichterstellung: Automatisiere die Generierung von Berichten nach jedem Build, sodass du dich auf die Analyse der Ergebnisse konzentrieren kannst.
  • Zentralisierte Berichterstattung: Sammle alle Testergebnisse an einem Ort und erhalte einen Überblick über den gesamten Testprozess.
  • Grafische Visualisierung: Zeige Testergebnisse in übersichtlichen und leicht verständlichen Berichten an, die die Interpretation vereinfachen.
  • Fehlererkennung: Identifiziere Fehler schnell und treffe fundiertere Entscheidungen zur Behebung von Problemen.
  • Kontinuierliche Integration: Integriere den Pytest-HTML-Bericht in dein CI-Tool wie Jenkins oder CircleCI, um den Testprozess als Teil deiner Build-Pipeline zu automatisieren.

Vorgehensweise

Die Integration des Pytest-HTML-Berichts in deine CI/CD-Pipeline ist einfach:

  1. Pytest-Plugin installieren: Installiere das pytest-html-Plugin über pip: pip install pytest-html.
  2. Plugin in CI-Konfiguration integrieren: Füge die Flagge --html=report.html zur deinem CI-Befehl hinzu, um die Berichterstellung zu aktivieren.
  3. Bericht anzeigen: Nach Abschluss des Builds findest du den HTML-Bericht im angegebenen Pfad.

Best Practices

  • Benutzerdefinierte Berichtvorlagen: Erstelle benutzerdefinierte Berichtvorlagen, um das Erscheinungsbild und die Inhalte der Berichte an deine Anforderungen anzupassen.
  • Berichtsanzeige anpassen: Passe die Berichtsanzeige an, indem du die Berichtsformate (z. B. HTML, JUnit XML), die anzuzeigenden Informationen (z. B. Statistiken, Stapelverfolgungen) und das Layout (z. B. Farben, Schriftarten) konfigurierst.
  • Erweiterungen und Plugins nutzen: Verwende Erweiterungen und Plugins, um die Berichterstellung zu erweitern und zusätzliche Funktionen wie Fehleraufnahmen, Codeabdeckung und Integration mit anderen Tools hinzuzufügen.
  • Integration mit Berichtstools: Integriere den HTML-Bericht mit Berichtstools wie Allure oder TestRail, um umfassendere und funktionsreichere Berichte zu erstellen.

Durch die Integration des Pytest-HTML-Berichts in deine CI/CD-Pipeline kannst du die Effizienz deines Testprozesses verbessern, die Fehlererkennung vereinfachen und die Qualität deiner Software sicherstellen.

Best Practices für Pytest-HTML-Berichte

Die Implementierung von Best Practices ist entscheidend, um aussagekräftige und informative Pytest-HTML-Berichte zu erstellen. Hier sind einige bewährte Verfahren, die du beachten solltest:

Einheitliche Benennung von Testfällen

Verwende einheitliche Benennungskonventionen für deine Testfälle. Dies verbessert die Lesbarkeit und Auffindbarkeit und ermöglicht eine schnellere Navigation durch die Ergebnisse.

Ausführliche Fehlermeldungen

Stelle sicher, dass deine Testfälle ausführliche Fehlermeldungen liefern. Diese helfen dir, die Ursachen von Testfehlern schnell zu identifizieren und zu beheben. Verwende die assert-Anweisung von Pytest, um aussagekräftige Fehler zu generieren.

Gruppenbezogene Testfälle

Gruppiere verwandte Testfälle in Klassen oder Modulen. Dies erleichtert die Organisation und Wartung deiner Testfälle und macht deine Berichte übersichtlicher.

Verwendung von Parametrisierungen

Nutze Parametrisierungen, um deine Testfälle für verschiedene Datensätze auszuführen. Dies spart Zeit und eliminiert die Notwendigkeit, für jeden Datensatz separate Testfälle zu schreiben.

Anpassung des HTML-Berichts

Passe deinen HTML-Bericht an deine Anforderungen an, indem du benutzerdefinierte CSS-Stile hinzufügst oder das Berichtsformat mit Hilfe von Plugins erweiterst. Dies ermöglicht es dir, Berichte zu erstellen, die deinen spezifischen Bedürfnissen entsprechen.

Integration mit Continuous Integration (CI)

Integriere Pytest in deine CI-Pipeline, um automatisierte Tests durchzuführen und HTML-Berichte zu generieren. Dies gewährleistet eine kontinuierliche Überwachung deiner Testfälle und hilft dir, Probleme frühzeitig zu erkennen.

Einbeziehung externer Bibliotheken

Ziehe die Einbindung externer Bibliotheken in Betracht, z. B. pytest-html, um die Funktionalität deiner HTML-Berichte zu erweitern. Diese Bibliotheken bieten zusätzliche Funktionen wie die Anpassung des Berichtslayouts und die Integration mit anderen Tools.

Regelmäßige Überprüfung und Wartung

Überprüfe deine HTML-Berichte regelmäßig und führe Wartungsarbeiten durch. Dadurch stellst du sicher, dass die Berichte auf dem neuesten Stand sind und deinen aktuellen Testanforderungen entsprechen.

Fehlerbehebung bei HTML-Berichten

Wenn du auf Probleme bei der Erstellung oder Anzeige von HTML-Berichten stößt, kannst du die folgenden Schritte zur Fehlerbehebung unternehmen:

Bericht wird nicht generiert

  • Überprüfe, ob du den Pytest-HTML-Reporter installiert hast. Installiere ihn gegebenenfalls mit pip install pytest-html.
  • Stelle sicher, dass du die HtmlReporter-Option zur Kommandozeile von Pytest hinzufügst, z. B. pytest --html=report.html.

Bericht ist leer oder zeigt keine Ergebnisse an

  • Überprüfe, ob deine Tests erfolgreich ausgeführt wurden. Fehlerhafte Tests werden möglicherweise nicht im Bericht angezeigt.
  • Stelle sicher, dass du die richtige HTML-Berichtsdatei öffnest.
  • Prüfe, ob die getestete Anwendung ordnungsgemäß läuft.

Bericht enthält falsche oder ungenaue Informationen

  • Überprüfe, ob du die neueste Version von Pytest und dem HTML-Reporter verwendest. Aktualisiere sie gegebenenfalls.
  • Prüfe, ob deine Testdaten korrekt und vollständig sind.
  • Stelle sicher, dass du explizite Assertions in deinen Tests verwendest. Assertions helfen, Fehler genauer zu lokalisieren.

Bericht wird nicht wie erwartet angezeigt

  • Überprüfe, ob du einen kompatiblen Browser verwendest. Die meisten modernen Browser unterstützen HTML-Berichte.
  • Stelle sicher, dass dein Browser über die neuesten Webstandards verfügt. Aktualisiere ihn gegebenenfalls.
  • Selenium IDE kann zum Debuggen von HTML-Berichten verwendet werden.
  • HTML Validation Services kann die Gültigkeit des HTML-Berichts überprüfen.

Weitere Hilfe

Schreibe einen Kommentar