TestNG Rapporten genereren in Selenium: Hoe genereren?

⚡ Slimme samenvatting

TestNG Rapporten zijn de standaard HTML-resultaatbestanden die TestNG Na elke testrun wordt er een bestand naar de map test-output geschreven met een overzicht van welke testgevallen geslaagd, mislukt of overgeslagen zijn, plus eventuele Reporter-logboeken.

  • 🔘 Standaarduitvoer: Elke TestNG Door de opdracht uit te voeren, wordt een test-outputmap aangemaakt zonder extra code.
  • ☑️ Twee HTML-weergaven: emailable-report.html vat de resultaten samen, index.html linkt naar de gedetailleerde weergaven.
  • ✅ Rapportagelogboeken: Reporter.log() schrijft aangepaste berichten rechtstreeks in het gegenereerde rapport.
  • 🧪 Suite draait: Door testng.xml uit te voeren, worden verschillende klassen gegroepeerd in één geconsolideerd rapport.
  • ️ Maatwerk: Met ITestListener en IReporter kan een team zijn eigen rapportindeling maken.
  • 📊 Naast de standaardinstellingen: ExtentReports en Allure voegen grafieken, geschiedenis en schermafbeeldingen toe als bijlagen.

TestNG rapportgeneratie in Selenium

Wat zijn TestNG Rapporten?

TestNG Rapporten zijn de standaard HTML-rapporten die worden gegenereerd zodra de testgevallen zijn uitgevoerd met behulp van TestNG. Deze rapporten helpen u de informatie over testgevallen en de status van een project in kaart te brengen. TestNG rapporten in Selenium Registreer voor elke testmethode drie mogelijke uitkomsten: geslaagd, mislukt en overgeslagen. Zo kunt u de gegevens over de testgevallen in één oogopslag bekijken.

Het genereren van rapporten is erg belangrijk bij zowel automatiseringstests als handmatige tests.

  • Door naar het resultaat te kijken, kunt u eenvoudig vaststellen hoeveel testgevallen zijn geslaagd, mislukt en overgeslagen.
  • Door het rapport te bekijken, weet u wat de status van het project is.

Selenium WebDriver wordt gebruikt voor het automatiseren van de webapplicatie, maar genereert zelf geen rapporten.

  • De TestNG genereert het standaardrapport.
  • Wanneer je het bestand testng.xml uitvoert en het project vernieuwt, krijg je een map genaamd test-output. Deze map bevat de rapportage-uitvoer. TestNG.
  • Klik met de rechtermuisknop op emailable-report.html en selecteer de optie 'Openen met de webbrowser'.

Let op: Het hier beschreven gedrag blijft ongewijzigd in TestNG 7.x. Releases van TestNG Vanaf versie 7.6 is JDK 11 of hoger vereist, dus voor oudere projecten kan het nodig zijn om het JDK-niveau te verhogen voordat de rapporten worden gegenereerd.

Types van TestNG Rapporten in de map test-output

Voordat je ook maar één bestand opent, is het handig om te weten wat de testuitvoermap precies bevat. TestNG Het programma schrijft bij elke uitvoeringssessie verschillende artefacten, en elk artefact beantwoordt een andere vraag.

Bestand of map Wat het bevat Wanneer het nuttig is
index.html Het landingsrapport bevat links naar de weergaven van resultaten, groepen, tijden en de output van de verslaggever. Een gedetailleerde analyse van één specifieke hardloopwedstrijd.
emailable-report.html Een enkele, op zichzelf staande pagina met een samenvatting van de geslaagde, mislukte en overgeslagen methoden per klasse. Een resultaat delen met mensen die het project niet openen.
testng-results.xml De machineleesbare XML, gegenereerd door de ingebouwde XML-reporter, bevat per methode de status en de duur. Een dashboard of een aangepaste parser van gegevens voorzien.
junirapporten JUnit- Formatteer XML-bestanden, één per testklasse. Elke CI-plug-in die de JUnit resultaatformaat.
testng-failed.xml Een gegenereerd suitebestand dat alleen de methoden bevat die zijn mislukt. Alleen de mislukte tests opnieuw uitvoeren in plaats van de hele testsuite.

De twee HTML-bestanden die in deze handleiding worden geopend, beginnen dus met emailable-report.html.

Hoe rapporten te genereren in Selenium

Methode-1: emailable-report.html

  1. Klik op de optie “emailable-report.html”
  2. Klik op optie webbrowser

De onderstaande schermafbeelding laat zien hoe het bestand emailable-report.html wordt geopend vanuit de map test-output.

Door emailable-report.html te selecteren binnen de TestNG test-uitvoermap

De uitvoer rapporteert in TestNG de rapportage ziet er als volgt uit als beide lessen zijn behaald:

TestNG Een rapport dat per e-mail kan worden verzonden en waaruit blijkt dat de testklassen DemoA en DemoB zijn geslaagd.

Denk aan het scenario waarin u opzettelijk de testcase, d.w.z. DemoB-klasse, laat mislukken. Converteer vervolgens beide klassen naar het testng.xml-suitebestand en voer het uit. Het resultaat ziet er dan zo uit. Het toont de mislukte testgevallen.

Dit is het resultaat voor de DemoB-klasse:

Een rapport dat per e-mail verzonden kan worden en de opzettelijk mislukte DemoB-testcase belicht.

Op dezelfde manier zal het resultaat voor de KlassedemoA er als volgt uitzien:

E-mailbare rapportsamenvattingsregel voor de geslaagde DemoA-klasse

Methode-2: index.html

  1. Klik met de rechtermuisknop op index.html in de projectmap.
  2. Selecteer de optie Openen met webbrowser. Het resultaat wordt in de volgende volgorde weergegeven.

De onderstaande schermafbeelding laat zien hoe index.html wordt geopend vanuit de projectmap.

Het bestand index.html openen vanuit de projectmap in een webbrowser.

Het resultaat ziet er als volgt uit:

TestNG index.html rapport landingspagina met een overzicht van de resultaten van de run

Methode 3: Reporterklasse

Samen met deze TestNG rapport gegenereerde methoden, kunt u het bestand object.properties gebruiken om de door het systeem gegenereerde logboeken en door de gebruiker gegenereerde logboeken op te slaan. Maar een van de eenvoudigste manieren om loginformatie tijdens het testen op te slaan, is het gebruik van Verslaggever klasse.

Verslaggever.log in Selenium is een klasse aanwezig in TestNG besteld, Selenium rapportage. Het biedt 4 verschillende methoden om loginformatie op te slaan:

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

Het tweede argument bepaalt of het bericht zowel in de console als in het rapport wordt weergegeven, en het argument 'level' bepaalt hoe gedetailleerd het bericht wordt weergegeven.

Voorbeeld:

Maak twee klassen, bijvoorbeeld DemoA en DemoB, en schrijf de volgende code binnen de klassen.

Voor klassedemoA;

  • De Code DemoA is hierboven al uitgelegd. Hier gebruik je... log-methode van de Reporter-klasse. (Om een ​​eigen rapportageklasse te implementeren, moet de klasse de interface org.testng.IReporter implementeren.)
  • De logmethode is een statische methode van de Reporter-klasse. U hebt dus toegang tot die methode via de klasse Reporter.
  • De logmethode wordt gebruikt om loginformatie op te slaan die in het programma is geschreven. Door naar de loginformatie te kijken, komt u gemakkelijk te weten waar de uitvoering van het programma precies wordt gestopt.

De onderstaande schermafbeelding toont de Reporter.log-aanroepen die in de DemoA-klasse zijn geplaatst.

De statements in het Reporter.log-bestand zijn geschreven binnen de DemoA-testklasse.

Voor klassedemoB:

De statements in het Reporter.log-bestand zijn geschreven binnen de DemoB-testklasse.

  • Maak nu het bestand testng.xml door deze twee klassen te selecteren en
  • Selecteer uitvoeren als en
  • Klik op converteren naar testen.
  • Voer vervolgens het bestand testng.xml uit door 'Uitvoeren als' te selecteren en testng suite te selecteren.
  • Vernieuw vervolgens het project en open de map testuitvoer.
  1. Open in de test-output folder emailable-report.html. Het ziet er dan zo uit:

    Een rapport dat per e-mail verzonden kan worden na het uitvoeren van de DemoA- en DemoB-testsuite (ng.xml).

    Op dezelfde manier heeft u ook een Output for Demo B-project.

  2. Open in de map test-output het bestand index.html. Het ziet er als volgt uit:

    Het index.html-rapport is gegenereerd na het uitvoeren van de testng.xml-suite.

Klik op verslaggeveruitvoer. Het opent logboekinformatie, wat er ook in de testmethoden is geschreven.

TestNG Rapportage-uitvoerweergave met een overzicht van de berichten die door de testmethoden zijn gelogd.

Klik op de Tijden. Het zal laten zien hoeveel tijd het kostte om de testmethode uit de klas uit te voeren TestNG rapportagetools.

TestNG Tijdsweergave die laat zien hoe lang elke testmethode heeft geduurd.

Aanpassen TestNG Rapporten met ITestListener en IReporter

De drie bovenstaande methoden gebruiken wat TestNG produceert standaard. Wanneer een team een ​​andere lay-out, extra velden of een live voortgangsweergave nodig heeft, TestNG Het biedt twee uitbreidingspunten in plaats van u te vragen het standaardrapport aan te passen.

  • ITestListener Je wordt in realtime op de hoogte gesteld zodra een test start, slaagt, mislukt of wordt overgeslagen. Gebruik deze functie wanneer de informatie direct vastgelegd moet worden op het moment dat de gebeurtenis plaatsvindt, bijvoorbeeld een screenshot bij een mislukking.
  • IRporter De applicatie wordt eenmaal op de hoogte gesteld, nadat elke suite is voltooid, en ontvangt objecten die de volledige uitvoering beschrijven. Gebruik deze functie wanneer de output een voltooid document is, zoals een PDF of een aangepaste HTML-pagina.

Een luisteraar die elk resultaat via de Reporter-klasse in het rapport verwerkt, ziet er als volgt uit.

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

Het registreren van de listener gebeurt in hetzelfde testng.xml suite-bestand dat je al hebt aangemaakt voor DemoA en 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>

Twee commandoregelopties zijn handig om te kennen tijdens het experimenteren. -d Deze optie wijzigt de map waarnaar de rapporten worden geschreven, en -gebruikte standaardlisteners false Schakelt de ingebouwde verslaggevers uit, zodat alleen je eigen luisteraar actief is. Beide worden beschreven in de officiële documentatie. TestNG logboekregistratie en documentatie van de resultaten, waarin ook de eigenschappen worden gedocumenteerd die door de ingebouwde XML-reporter worden geaccepteerd.

Een luisteraar wordt eenmalig geregistreerd en is vervolgens van toepassing op elke klasse in de suite. Daarom werken grote teams zo. automatisering testen Testsuites geven hier doorgaans de voorkeur aan boven het handmatig toevoegen van logregels aan elke testmethode.

TestNG Standaardrapporten versus ExtentReports versus Allure

De standaardrapporten zijn voldoende voor een kleine suite, maar ze bevatten geen historie en geen grafieken. Twee open-sourcebibliotheken worden vaak toegevoegd wanneer een suite groeit, en beide werken met TestNG.

Bekwaamheid TestNG verzuim ExtentReports Allure-rapport
Opstartinspanning Geen — automatisch gegenereerd Voeg de bibliotheek toe en schrijf de reportercode. Voeg de adapter toe en genereer vervolgens het rapport op basis van de resultaten.
Grafieken en dashboards Nee Ja Ja
screenshots Alleen via de Reporter.log-opmaak Ingebouwde bijlage-API Ingebouwde bijlage-API
Loopgeschiedenis en trends Nee Via de optionele servercomponent Ja, op basis van eerder opgeslagen resultaten.
Kaderdekking TestNG Slechts Java en .NET Kader agnostisch

Begin met de standaardrapporten zolang de suite klein is. Ga vervolgens verder met... ExtentReports wanneer belanghebbenden om leesbare dashboards vragen, en om Allure-rapport Wanneer de geschiedenis van onbetrouwbare tests over verschillende builds heen de doorslaggevende factor wordt, is het belangrijk om te weten dat, ongeacht de gekozen methode, het rapport normaal gesproken door de buildtaak wordt gepubliceerd, zoals beschreven in de documentatie. Jenkins continue integratie tutorial.

Veelgestelde vragen

De map verschijnt pas daarna TestNG De run is voltooid en het project wordt vernieuwd in de IDE. Een lege map betekent meestal dat de klasse als een gewoon bestand is gestart. Java De applicatie, of de standaardlisteners, waren uitgeschakeld, waardoor er nooit een reporter is uitgevoerd.

Ja. TestNG Schrijft standaard naar test-output. Geef de optie -d mee op de commandoregel, of stel de uitvoermap in in de IDE-uitvoeringsconfiguratie of in de Maven Surefire-instellingen waarmee de suite wordt gestart.

Leg de afbeelding vast in een listener-methode zoals onTestFailure, sla het bestand op naast het rapport en schrijf vervolgens een HTML-afbeeldingstag via Reporter.log. Het rapport geeft de markup weer, zodat de afbeelding naast de mislukte methode verschijnt.

TestNG Het programma zelf verstuurt geen e-mail. Teams voegen normaal gesproken een e-mailbaar rapportbestand (mailable-report.html) toe vanuit een buildtaak, bijvoorbeeld een Jenkins Voeg een e-mailstap toe na de build, of een kleine e-mailroutine binnen een IReporter-implementatie.

AI-modellen groeperen fouten op basis van de gebruikte stack.tracDoor overeenkomsten te herkennen, echte defecten te onderscheiden van omgevings- of timingfouten, en te bepalen welke falende methoden als eerste moeten worden geïnspecteerd. Een lange lijst met rapporten die per e-mail kunnen worden verzonden, wordt zo een korte, geprioriteerde wachtrij voor het team.

GitHub-copiloot Kan listenerklassen, Reporter.log-berichten en testng.xml-items genereren op basis van een korte opmerking. RevBekijk elke suggestie, want gegenereerde listeners missen vaak de exacte interfacemethoden. TestNG verwacht.

Zodra een IRetryAnalyzer is gekoppeld, wordt elke herhaalpoging samen met het uiteindelijke resultaat geregistreerd. Het standaardrapport toont daarom elke poging, waardoor een instabiele test in dezelfde run zowel als mislukt als geslaagd kan worden weergegeven.

Geef -usedefaultlisteners false mee op de commandoregel, of stel useDefaultListeners in op false in de Maven Surefire- of Ant-configuratie. Alleen de reporters die u expliciet registreert, worden dan uitgevoerd, wat de uitvoeringsduur verkort voor zeer grote testsuites.

Vat dit bericht samen met: