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.
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
- Klik op de optie “emailable-report.html”
- Klik op optie webbrowser
De onderstaande schermafbeelding laat zien hoe het bestand emailable-report.html wordt geopend vanuit de map test-output.
De uitvoer rapporteert in TestNG de rapportage ziet er als volgt uit als beide lessen zijn behaald:
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:
Op dezelfde manier zal het resultaat voor de KlassedemoA er als volgt uitzien:
Methode-2: index.html
- Klik met de rechtermuisknop op index.html in de projectmap.
- 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 resultaat ziet er als volgt uit:
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:
- Reporter.log(String s);
- Reporter.log(String s, Booleaanse logToStandardOut);
- Reporter.log(String s, int-niveau);
- 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.
Voor klassedemoB:
- 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.
- Open in de test-output folder emailable-report.html. Het ziet er dan zo uit:
Op dezelfde manier heeft u ook een Output for Demo B-project.
- Open in de map test-output het bestand index.html. Het ziet er als volgt uit:
Klik op verslaggeveruitvoer. Het opent logboekinformatie, wat er ook in de testmethoden is geschreven.
Klik op de Tijden. Het zal laten zien hoeveel tijd het kostte om de testmethode uit de klas uit te voeren TestNG rapportagetools.
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.












