Prilagođeno izvještavanje s TestNG-om

1. Pregled

U ovom ćemo članku raspravljati o generiranju vlastite evidencije i izvješća pomoću TestNG-a.

TestNG nudi vlastitu značajku izvještavanja - generira izvješća u bilo kojem od HTML / XML formata. Ako se testovi izvode pomoću maven-surefire-plugin, izvješće će imati zadani oblik definiran dodatkom. Osim ugrađenog izvješćivanja, pruža mehanizam za lako prilagođavanje evidentiranih podataka i generiranih izvješća.

Ako želite započeti s osnovama TestNG-a, pogledajte ovaj članak.

2. Prilagođena prijava

Prije nego što implementiramo prilagođenu evidenciju, izvršimo izvršenje zadanih dnevnika mvn test naredba:

Izvršeni testovi: 11, neuspjesi: 1, pogreške: 0, preskočeni: 0, proteklo vrijeme: 1,21 sek <<< FAILURE! - u TestSuite whenCalledFromSuite_thanOK (baeldung.com.RegistrationTest) Proteklo vrijeme: 0,01 sek <<< FAILURE! java.lang.AssertionError: Test iz nekog razloga nije uspio na baeldung.com.RegistrationTest.whenCalledFromSuite_thanOK (RegistrationTest.java:15) Rezultati: Neuspjeli testovi: RegistrationTest.whenCalledFromSuite_thanOK: 15 Test nije uspio iz nekog razloga. Testovi su pokrenuti: 11, neuspjeh. 1, pogreške: 0, preskočene: 0 [POGREŠKA] Postoje neuspjesi testa.

Ti nam dnevnici ne daju nikakve informacije o redoslijedu izvršenja, niti o tome kada je određeno ispitivanje započeto / dovršeno itd.

Ako želimo znati rezultat svakog izvođenja zajedno s nekim prilagođenim podacima, možemo implementirati vlastite zapisnike i izvješća. TestNG pruža način implementacije prilagođenih izvješća i evidentiranja.

Jednostavno rečeno, možemo ili implementirati org.testng.ITestListener sučelje za prijavu ili org.testng.IReporter sučelje za izvještavanje. Ove implementirane klase dobivaju obavijesti o događajima poput početka, završetka, neuspjeha itd. O testovima i apartmanima.

Krenimo i implementiramo nekoliko jednostavnih prilagođenih zapisivanja:

javna klasa CustomizedListener implementira ITestListener {// ... @Override public void onFinish (ITestContext testContext) {LOGGER.info ("PROLAZENI TESTI"); testContext.getPassedTests (). getAllResults () .forEach (rezultat -> {LOGGER.info (result.getName ());}); LOGGER.info ("PROPALI SLUČAJEVI"); testContext.getFailedTests (). getAllResults () .forEach (rezultat -> {LOGGER.info (result.getName ());}); LOGGER.info ("Test je završen:" + testContext.getEndDate (). ToString ()); } // ...} 

Primijetite kako smo nadjačali onFinish () metoda koja će se pozvati kad su sva izvršavanja testa dovršena i sve konfiguracije budu gotove. Slično tome, možemo nadjačati druge metode - poput onTestStart (), onTestFailure () itd. (a detalje o tim ostalim metodama pronađite ovdje).

Sad uključimo ovog slušatelja u XML konfiguraciju:

Jednom kada se izvrši, slušatelj će se pozivati ​​za svaki događaj i bilježit će informacije kako smo ih implementirali. Ovo bi moglo biti korisno za otklanjanje pogrešaka u izvršenju testa.

Izlazni zapisnici:

... INFO CUSTOM_LOGS - započeo testiranje na: Sat Apr 22 14:39:43 IST 2017 INFO CUSTOM_LOGS - Testiranje: givenNumberFromDataProvider_ifEvenCheckOK_thenCorrect INFO CUSTOM_LOGS - testirano: givenNumberFromDataProvider_ifEvenCheckOK_thenCorrect Vrijeme snimanja: 6 ms INFO CUSTOM_LOGS - Testiranje: givenNumberObjectFromDataProvider_ifEvenCheckOK_thenCorrect INFO CUSTOM_LOGS - nije uspjelo: givenNumberObjectFromDataProvider_ifEvenCheckOK_thenCorrect INFO CUSTOM_LOGS - prošao test slučajeva INFO CUSTOM_LOGS - givenNumberFromDataProvider_ifEvenCheckOK_thenCorrect INFO CUSTOM_LOGS - nije test slučajeva INFO CUSTOM_LOGS - givenNumberObjectFromDataProvider_ifEvenCheckOK_thenCorrect INFO CUSTOM_LOGS - Ispitna završena: Sat Apr 22 14:39:43 IST 2017 ...

Prilagođeni dnevnici daju nam nedostajuće informacije u zadanim zapisnicima.

3. Prilagođena izvješća

Kada pokrenemo testove pomoću dodatka, on generira izvješća u HTML / XML formatima u izvještaji o ciljevima / izvještajima imenik:

Ako želimo pokrenuti određeni paket za testiranje pomoću datoteke TestNG XML, moramo ga navesti u dodatku surefire konfiguracija označiti:

   src \ test \ resources \ parametrized_testng.xml 

Nakon prilagođene evidencije, sada pokušajmo stvoriti neka prilagođena izvješća gdje implementiramo org.testng.IReporter sučelje i nadjačati generiraj izvještaj () metoda:

javna praznina generiraj izvještaj (Popis xmlSuites, Popis suita, String outputDirectory) {String reportTemplate = initReportTemplate (); Tijelo niza = apartmani .stream () .flatMap (suiteToResults ()) .collect (Collectors.joining ()); Niz izvješća = reportTemplate.replaceFirst ("", String.format ("% s", body)); saveReportTemplate (outputDirectory, report);}

Nadjačana metoda uzima tri argumenta:

  • xmlSuite - sadrži popis svih apartmana spomenutih u XML datoteci
  • apartmani - objekt popisa koji sadrži sve informacije o izvršenju testa
  • outputDirectory - putanja direktorija gdje se generiraju izvještaji

Koristili smo initReportTemplate () metoda za učitavanje HTML predloška, suiteToResults () funkcija koja poziva na resultsToRow () funkcija za rukovanje unutarnjim dijelovima generiranja izvješća:

privatna funkcija suiteToResults () {return suite -> suite.getResults (). entrySet () .stream () .flatMap (resultsToRows (suite)); } privatna funkcija resultsToRows (ISuite suite) {return e -> {ITestContext testContext = e.getValue (). getTestContext (); Postavi failedTests = testContext.getFailedTests (). GetAllResults (); Postavi passTests = testContext.getPassedTests (). GetAllResults (); Postavi skippedTests = testContext.getSkippedTests (). GetAllResults (); Niz suiteName = suite.getName (); vratiti Stream .of (neuspjeliTest, prošliTest, preskočeniTest) .flatMap (rezultati -> generiratiReportRows (e.getKey (), suiteName, results) .stream ()); }; }

i saveReportTemplate () za spremanje kompletnog rezultata.

Uključite izvjestitelja u XML konfiguracijsku datoteku:

Evo rezultata naših izvještaja:

U usporedbi sa zadanim sigurnim HTML izvješćem, ovo izvješće daje jasnu i jasnu sliku rezultata u jednoj tablici. Što je prikladnije i jednostavnije za čitanje.

4. Zaključak

U ovom smo brzom vodiču naučili kako generirati izvještaje o testiranju pomoću dodatka Surefire Maven. Također smo proučavali prilagodbu dnevnika i generiranje prilagođenih izvješća pomoću TestNG-a. Za više detalja o TestNG-u, poput pisanja test slučajeva, paketa itd., Pogledajte naš uvod

Za više detalja o TestNG-u, poput pisanja test slučajeva, apartmana, definitivno započnite s našim uvodnim člankom.

Kao i uvijek implementacija isječaka može se naći na GitHubu.


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