Brugerdefineret rapportering med TestNG

1. Oversigt

I denne artikel vil vi diskutere generering af brugerdefineret logning og rapporter ved hjælp af TestNG.

TestNG tilbyder sin egen rapporteringsfunktion - genererer rapporter i enten HTML / XML-formater. Hvis test udføres ved hjælp af maven-surefire-plugin, rapporten tager standardformularen defineret af pluginet. Bortset fra indbygget rapportering giver det en mekanisme til nem tilpasning af logget information og genererede rapporter.

Hvis du gerne vil starte med TestNG-basics, skal du tjekke denne artikel.

2. Brugerdefineret logning

Før vi implementerer brugerdefineret logning, skal vi se på standardlogfiler ved at udføre mvn test kommando:

Testkørsel: 11, Fejl: 1, Fejl: 0, Springet over: 0, Forløbet tid: 1.21 sek <<< FEJL! - i TestSuite whenCalledFromSuite_thanOK (baeldung.com.RegistrationTest) Forløbet tid: 0,01 sek <<< FEJL! java.lang.AssertionError: Test mislykkedes på grund af en eller anden grund på baeldung.com.RegistrationTest.whenCalledFromSuite_thanOK (RegistrationTest.java:15) Resultater: Mislykkede tests: RegistrationTest.whenCalledFromSuite_thanOK: 15 Test mislykkedes på grund af en eller anden grund Testkørsel: 11, Fejl: 1, fejl: 0, springet over: 0 [FEJL] Der er testfejl.

Disse logfiler giver os ingen oplysninger om rækkefølgen af ​​udførelsen eller om hvornår en bestemt test blev startet / afsluttet osv.

Hvis vi vil vide resultatet af hver kørsel sammen med nogle brugerdefinerede data, kan vi implementere vores egne logfiler og rapporter. TestNG giver en måde at implementere brugerdefinerede rapporter og logning på.

Kort sagt, vi kan enten implementere org.testng.ITestListener interface til logning eller org.testng.IReporter interface til rapportering. Disse implementerede klasser får besked om begivenheder som start, slutning, fiasko osv. Af tests og suiter.

Lad os gå videre og implementere nogle enkle brugerdefinerede logfiler:

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 ("FAILED TEST CASES"); testContext.getFailedTests (). getAllResults () .forEach (result -> {LOGGER.info (result.getName ());}); LOGGER.info ("Test afsluttet den:" + testContext.getEndDate (). ToString ()); } // ...} 

Læg mærke til, hvordan vi har tilsidesat onFinish () metode, som påberåbes, når alle testudførelser er færdige, og alle konfigurationer er udført. På samme måde kan vi tilsidesætte andre metoder - såsom onTestStart (), onTestFailure () osv. (og find detaljer om disse andre metoder her).

Lad os nu inkludere denne lytter i XML-konfigurationen:

Når den er udført, bliver lytteren påkaldt hver begivenhed og logger information, når vi implementerede. Dette kan være nyttigt til fejlfinding af vores testudførelse.

Outputloggene:

... INFO CUSTOM_LOGS - Startede test på: Sat apr 22 14:39:43 IST 2017 INFO CUSTOM_LOGS - Test: givenNumberFromDataProvider_ifEvenCheckOK_thenCorrect INFO CUSTOM_LOGS - Testet: givenNumberFromDataProvider_ifEvenCheckOK_thenCorrect Tid taget: 6 ms INFO CUSTOM_LOGS - Test: givenNumberObjectFromDataProvider_ifEvenCheckOK_thenCorrect INFO CUSTOM_LOGS - Mislykket: givenNumberObjectFromDataProvider_ifEvenCheckOK_thenCorrect INFO CUSTOM_LOGS - PASSEDE TESTSAGER INFO CUSTOM_LOGS - givenNumberFromDataProvider_ifEvenCheckOK_thenCorrect INFO CUSTOM_LOGS - FAILED TEST CASES INFO CUSTOM_LOGS - givenNumberObjectFromDataProvider_ifEvenCheckOK_OF

De brugerdefinerede logfiler giver os manglende oplysninger i standardlogfiler.

3. Brugerdefinerede rapporter

Når vi kører tests ved hjælp af pluginet, genererer det rapporter i HTML / XML-formater i mål / sikkerhedsrapporter vejviser:

Hvis vi vil køre en bestemt testpakke ved hjælp af en TestNG XML-fil, skal vi liste den i surefire-plugin konfiguration tag:

   src \ test \ resources \ parametrized_testng.xml 

Efter brugerdefineret logning, lad os nu prøve at oprette nogle brugerdefinerede rapporter, hvor vi implementerer org.testng.IReporter interface og tilsidesætte createReport () metode:

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

Den tilsidesatte metode tager tre argumenter:

  • xmlSuite - indeholder en liste over alle suiter, der er nævnt i XML-filen
  • suiter - et listeobjekt, der indeholder alle oplysninger om testudførelsen
  • outputDirectory - katalogstien, hvor rapporter genereres

Vi brugte initReportTemplate () metode til at indlæse en HTML-skabelon, suiteToResults () funktion, der påberåber sig resultsToRow () funktion til at håndtere det interne ved generering af rapporten:

privat funktion suiteToResults () {return suite -> suite.getResults (). entrySet () .stream () .flatMap (resultsToRows (suite)); } privat funktion resultsToRows (ISuite-suite) {return e -> {ITestContext testContext = e.getValue (). getTestContext (); Indstil failedTests = testContext.getFailedTests (). GetAllResults (); Sæt bestået tests = testContext.getPassedTests (). GetAllResults (); Indstil skippedTests = testContext.getSkippedTests (). GetAllResults (); Streng suiteName = suite.getName (); returner Stream .of (failedTests, passedTests, skippedTests) .flatMap (results -> generateReportRows (e.getKey (), suiteName, results) .stream ()); }; }

og saveReportTemplate () for at gemme det komplette resultat.

Inkluder reporteren i XML-konfigurationsfilen:

Her er resultatet af vores rapporter:

Sammenlignet med standard-sikker HTML-rapport giver denne rapport et klart og skarpt billede af resultatet i en enkelt tabel. Hvilket er mere praktisk og let at læse.

4. Konklusion

I denne hurtige vejledning lærte vi om, hvordan man genererer testrapporter med Surefire Maven-plugin. Vi undersøgte også tilpasning af logfilerne og generering af tilpassede rapporter med TestNG. For flere detaljer om TestNG som hvordan man skriver testcases, suiter osv. Henvises til vores introduktion

For flere detaljer om TestNG, såsom hvordan man skriver testcases, suiter, skal du helt sikkert starte med vores indledende artikel.

Som altid kan implementeringen af ​​uddrag findes på GitHub.


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