Tilpasset rapportering med TestNG

1. Oversikt

I denne artikkelen vil vi diskutere generering av tilpasset logging og rapporter ved hjelp av TestNG.

TestNG tilbyr sin egen rapporteringsfunksjon - genererer rapporter i enten HTML / XML-format. Hvis test kjøres med maven-surefire-plugin, rapporten tar standard skjema definert av plugin. Bortsett fra innebygd rapportering, gir den en mekanisme for enkel tilpasning av logget informasjon og genererte rapporter.

Hvis du vil begynne med det grunnleggende om TestNG, kan du sjekke ut denne artikkelen.

2. Egendefinert logging

Før vi implementerer tilpasset logging, la oss se på standardloggene ved å utføre mvn test kommando:

Testkjøring: 11, Feil: 1, Feil: 0, Hoppet over: 0, Forløpt tid: 1.21 sek <<< FEIL! - i TestSuite whenCalledFromSuite_thanOK (baeldung.com.RegistrationTest) Forløpt tid: 0,01 sek <<< FEIL! java.lang.AssertionError: Test mislyktes på grunn av en eller annen grunn på baeldung.com.RegistrationTest.whenCalledFromSuite_thanOK (RegistrationTest.java:15) Resultater: Mislykkede tester: RegistrationTest.whenCalledFromSuite_thanOK: 15 Test mislyktes på grunn av en eller annen grunn Testkjøring: 11, Feil: 1, feil: 0, hoppet over: 0 [FEIL] Det er testfeil.

Disse loggene gir oss ingen informasjon om rekkefølgen på utførelsen, eller om når en bestemt test ble startet / fullført etc.

Hvis vi vil vite resultatet av hvert løp sammen med noen tilpassede data, kan vi implementere våre egne logger og rapporter. TestNG gir en måte å implementere tilpassede rapporter og logging på.

Enkelt sagt, vi kan enten implementere org.testng.ITestListener grensesnitt for logging eller org.testng.IReporter grensesnitt for rapportering. Disse implementerte klassene får beskjed om hendelser som start, slutt, feil osv. Av tester og suiter.

La oss gå videre og implementere noen enkle tilpassede loggføringer:

offentlig klasse CustomisedListener implementerer ITestListener {// ... @Override public void onFinish (ITestContext testContext) {LOGGER.info ("PASSED TEST CASES"); testContext.getPassedTests (). getAllResults () .forEach (result -> {LOGGER.info (result.getName ());}); LOGGER.info ("FEILEDE TESTSAKER"); testContext.getFailedTests (). getAllResults () .forEach (result -> {LOGGER.info (result.getName ());}); LOGGER.info ("Test fullført på:" + testContext.getEndDate (). ToString ()); } // ...} 

Legg merke til hvordan vi har overstyrt onFinish () metode, som vil bli påkalt når alle testutførelser er fullført og alle konfigurasjoner er gjort. På samme måte kan vi overstyre andre metoder - for eksempel onTestStart (), onTestFailure () etc (og finn detaljer om disse andre metodene her).

La oss nå inkludere denne lytteren i XML-konfigurasjonen:

Når den er utført, blir lytteren påkalt hver hendelse og logger informasjon når vi implementerte. Dette kan være nyttig for feilsøking av testutførelsen.

Utgangsloggene:

... INFO CUSTOM_LOGS - Startet testing på: Lør 22 april 14:39:43 IST 2017 INFO CUSTOM_LOGS - Testing: givenNumberFromDataProvider_ifEvenCheckOK_thenCorrect INFO CUSTOM_LOGS - Testet: givenNumberFromDataProvider_ifEvenCheckOK_thenCorrect Tiden det tar: 6 ms INFO CUSTOM_LOGS - Testing: givenNumberObjectFromDataProvider_ifEvenCheckOK_thenCorrect INFO CUSTOM_LOGS - Kunne: givenNumberObjectFromDataProvider_ifEvenCheckOK_thenCorrect INFO CUSTOM_LOGS - PASSED TEST CASES INFO CUSTOM_LOGS - givenNumberFromDataProvider_ifEvenCheckOK_thenCorrect INFO CUSTOM_LOGS - FAILED TEST CASES INFO CUSTOM_LOGS - givenNumberObjectFromDataProvider_ifEvenCheckOFO

De tilpassede loggene gir oss manglende informasjon i standardloggene.

3. Tilpassede rapporter

Når vi kjører tester ved hjelp av pluginet, genererer det rapporter i HTML / XML-formater i mål / sikkerhetsrapporter katalog:

Hvis vi vil kjøre en bestemt testsuite ved hjelp av en TestNG XML-fil, må vi liste den i surefire-plugin konfigurasjon stikkord:

   src \ test \ resources \ parametrized_testng.xml 

Etter tilpasset logging, la oss nå prøve å lage noen tilpassede rapporter der vi implementerer org.testng.IReporter grensesnitt og overstyre generer rapport() metode:

offentlig ugyldig generereReport (Liste xmlSuites, List suites, String outputDirectory) {String reportTemplate = initReportTemplate (); String body = suites .stream () .flatMap (suiteToResults ()) .collect (Collectors.joining ()); Strengrapport = reportTemplate.replaceFirst ("", String.format ("% s", body)); saveReportTemplate (outputDirectory, report);}

Den overstyrte metoden tar tre argumenter:

  • xmlSuite - inneholder en liste over alle suitene som er nevnt i XML-filen
  • suiter - et listeobjekt som inneholder all informasjon om testutførelsen
  • outputDirectory - katalogbanen der rapporter genereres

Vi brukte initReportTemplate () metode for å laste inn en HTML-mal, suiteToResults () funksjon som påkaller resultsToRow () funksjon for å håndtere det interne ved generering av rapporten:

privat funksjon suiteToResults () {retur suite -> suite.getResults (). entrySet () .stream () .flatMap (resultsToRows (suite)); } privat funksjon resultsToRows (ISuite-suite) {return e -> {ITestContext testContext = e.getValue (). getTestContext (); Sett failedTests = testContext.getFailedTests (). GetAllResults (); Angi beståttester = testContext.getPassedTests (). GetAllResults (); Sett skippedTests = testContext.getSkippedTests (). GetAllResults (); Streng suiteName = suite.getName (); return Stream .of (failedTests, passedTests, skippedTests) .flatMap (results -> generateReportRows (e.getKey (), suiteName, results) .stream ()); }; }

og saveReportTemplate () for å lagre hele resultatet.

Inkluder reporteren i XML-konfigurasjonsfilen:

Her er resultatet av rapportene våre:

Sammenlignet med standard sikker HTML-rapport, gir denne rapporten et klart og skarpt bilde av resultatet, i en enkelt tabell. Noe som er mer praktisk og lett å lese.

4. Konklusjon

I denne raske opplæringen lærte vi om hvordan du genererer testrapporter med Surefire Maven-plugin. Vi så også på å tilpasse loggene og generere tilpassede rapporter med TestNG. For mer informasjon om TestNG, for eksempel hvordan du skriver testtilfeller, suiter, etc., se vår innledning

For mer informasjon om TestNG, for eksempel hvordan du skriver testsaker, suiter, start definitivt med vår innledende artikkel.

Som alltid kan implementeringen av kodebitene finnes på GitHub.


$config[zx-auto] not found$config[zx-overlay] not found