TestNG Generiranje izvješća u Selenium: Kako generirati?

⚡ Pametni sažetak

TestNG Izvješća su zadane HTML datoteke rezultata koje TestNG zapisuje u mapu test-output nakon svakog pokretanja, prikazujući koji su testni slučajevi prošli, neuspjeli ili su preskočeni, plus sve Reporter zapise.

  • 🔘 Zadani izlaz: Svaki TestNG Naredba run stvara mapu s testnim izlazom bez ikakvog dodatnog koda.
  • ☑️ Dva HTML prikaza: emailable-report.html sažima rezultate, a index.html povezuje na detaljne prikaze.
  • Zapisnici izvjestitelja: Reporter.log() zapisuje prilagođene poruke izravno u generirano izvješće.
  • 🧪 Apartman radi: Pokretanjem testng.xml grupira se nekoliko klasa u jedno konsolidirano izvješće.
  • 🛠️ prilagodba: ITestListener i IReporter omogućuju timu da izgradi vlastiti format izvješća.
  • 📊 Osim zadanih postavki: ExtentReports i Allure dodaju grafikone, povijest i snimke zaslona u prilogu.

TestNG generiranje izvješća u Selenium

Što su TestNG Izvještaji?

TestNG Izvješća su zadana HTML izvješća koja se generiraju nakon što se testni slučajevi izvrše pomoću TestNG. Ova izvješća vam pomažu identificirati informacije o testnim slučajevima i statusu projekta. TestNG izvješća u Selenium Zabilježite tri ishoda za svaku metodu testiranja - prolaz, pad i preskoči - kako biste mogli na prvi pogled provjeriti podatke o testnim slučajevima.

Generiranje izvješća vrlo je važno kada provodite automatizirano testiranje, kao i za ručno testiranje.

  • Gledajući rezultat, možete lako utvrditi koliko je testnih slučajeva prošlo, neuspješno i preskočeno.
  • Uvidom u izvješće saznat ćete kakav je status projekta.

Selenium WebDriver se koristi za automatizaciju web aplikacije, ali samostalno ne generira nikakva izvješća.

  • The TestNG će generirati zadano izvješće.
  • Kada pokrenete datoteku testng.xml i osvježite projekt, dobit ćete mapu test-output, a ta mapa sadrži izlaz izvješća iz TestNG.
  • Desnom tipkom miša kliknite na emailable-report.html i odaberite opciju Otvori s web preglednikom.

Bilješka: ponašanje opisano ovdje ostaje nepromijenjeno u TestNG 7.x. Izdanja iz TestNG Verzije od verzije 7.6 nadalje zahtijevaju JDK 11 ili noviju verziju, tako da stariji projekti mogu zahtijevati podizanje razine JDK-a prije nego što se izvješća izrade.

Vrste TestNG Izvješća u mapi test-output

Prije otvaranja bilo koje datoteke, korisno je znati što mapa test-output zapravo sadrži. TestNG zapisuje nekoliko artefakata u svakom prolazu, a svaki od njih odgovara na drugačije pitanje.

Datoteka ili mapa Što sadrži Kada je korisno
index.html Izvješće o slijetanju koje povezuje s rezultatima, grupama, vremenima i prikazima izvještaja izvjestitelja. Detaljno proučavanje jednog trčanja.
izvješće-za-e-poštu.html Jedna samostalna stranica koja sažima uspješne, neuspješne i preskočene metode po klasi. Dijeljenje rezultata s ljudima koji ne otvaraju projekt.
testng-results.xml Strojno čitljiv XML koji je napisao ugrađeni XML reporter, sa statusom i trajanjem za svaku metodu. Unos podataka u nadzornu ploču ili prilagođeni parser.
junitreports JUnit-format XML datoteke, jedna po ispitnoj klasi. Bilo koji CI dodatak koji čita JUnit format rezultata.
testng-failed.xml Generirana datoteka paketa koja navodi samo metode koje nisu uspjele. Ponovno pokretanje samo kvarova umjesto cijelog paketa.

Dvije HTML datoteke su one koje se sljedeće otvaraju u ovom vodiču, pa donji vodič počinje s emailable-report.html.

Kako generirati izvješća u Selenium

Metoda-1: emailable-report.html

  1. Kliknite na opciju “emailable-report.html”
  2. Kliknite opciju web preglednik

Snimka zaslona u nastavku prikazuje otvaranje datoteke emailable-report.html iz mape test-output.

Odabirom datoteke emailable-report.html unutar TestNG mapa s testnim izlazom

Izlaz javlja u TestNG izvješćivanje će izgledati ovako ako su oba razreda prošla:

TestNG izvješće koje se može poslati e-poštom i prikazuje položene ispitne predmete DemoA i DemoB

Razmotrite scenarij u kojem namjerno padate na ispitnom slučaju, tj. DemoB klasi. Zatim pretvorite obje klase u datoteku paketa testng.xml i pokrenite je. Tada će rezultat izgledati ovako. Pokazat će neuspjeli testni slučajevi.

Ovo je rezultat za DemoB klasu:

Izvješće koje se može poslati e-poštom i ističe namjerno neuspjeli DemoB testni slučaj

Slično, rezultat za Class DemoA izgledat će ovako:

Redak sažetka izvješća koji se može poslati e-poštom za prolazni DemoA razred

Metoda-2: index.html

  1. Desni klik na index.html iz direktorija projekta.
  2. Odaberite opciju otvaranja s opcijom web preglednika. Prikazat će rezultat sljedećim redoslijedom.

Snimka zaslona u nastavku prikazuje otvaranje datoteke index.html iz direktorija projekta.

Otvaranje index.html datoteke iz direktorija projekta u web pregledniku

Rezultat će izgledati ovako:

TestNG početna stranica izvješća index.html s popisom prikaza rezultata pokretanja

Metoda-3: Čas izvjestitelja

Uz ove TestNG metode koje generira izvješće, možete koristiti datoteku object.properties za pohranjivanje zapisnika koje je generirao sustav kao i zapisnike koje je generirao korisnik. Ali jedan od najjednostavnijih načina za pohranjivanje podataka dnevnika u testiranju je korištenje Reporter Klasa.

Reporter.uloguj se Selenium je razred prisutan u TestNG za Selenium izvještavanje. Omogućuje 4 različite metode za pohranjivanje podataka dnevnika, a to su:

  1. Reporter.log(Niz s);
  2. Reporter.log(String s, Boolean logToStandardOut);
  3. Reporter.log(String s, int level);
  4. Reporter.log(String s, int level, Boolean logToStandardOut);

Drugi argument odlučuje hoće li se poruka prikazati na konzoli kao i u izvješću, a argument level kontrolira razinu detalja poruke.

Primjer:

Napravite dvije klase kao što su DemoA i DemoB i napišite sljedeći kod unutar klasa.

Za razred DemoA;

  • The Code za DemoA je već objašnjeno gore. Ovdje koristite log metoda klase Reporter. (Za implementaciju vlastite klase izvještavanja, klasa mora implementirati sučelje org.testng.IReporter.)
  • Log metoda je statična metoda klase Reporter. Dakle, toj metodi pristupate kroz klasu Reporter.
  • Metoda zapisnika koristi se za pohranjivanje podataka zapisnika koji su napisani unutar programa. Gledajući informacije u dnevniku, lako ćete saznati gdje je točno zaustavljeno izvršenje programa.

Snimka zaslona u nastavku prikazuje pozive funkcije Reporter.log smještene unutar klase DemoA.

Izjave Reporter.log napisane unutar testne klase DemoA

Za klasu DemoB:

Reporter.log naredbe napisane unutar testne klase DemoB

  • Sada stvorite datoteku testng.xml odabirom ove dvije klase i
  • Odaberite Run as i
  • Kliknite na pretvori u testng.
  • Zatim pokrenite ovu datoteku testng.xml odabirom Pokreni kao i odabirom paketa testng.
  • Zatim osvježite projekt i otvorite mapu test-output.
  1. U mapi test-output otvorite emailable-report.html. Izgledat će ovako:

    Izvješće koje se može poslati e-poštom generirano nakon pokretanja paketa testng.xml za DemoA i DemoB

    Slično tome, imat ćete i Output za Demo B projekt.

  2. U mapi test-output otvorite datoteku index.html. Izgledat će ovako:

    Izvješće index.html generirano nakon pokretanja paketa testng.xml

Kliknite na izlaz reportera. Otvorit će podatke o zapisivanju bez obzira što je napisano u testnim metodama.

TestNG prikaz izlaza reportera s popisom poruka koje su zabilježile metode testiranja

Kliknite na Times. Pokazat će koliko je vremena bilo potrebno da se pokrene testna metoda prisutna u razredu TestNG alati za izvještavanje.

TestNG Vremenski prikaz koji prikazuje koliko je vremena trebalo za izvođenje svake metode testiranja

Kako prilagoditi TestNG Izvješća s ITestListenerom i IReporterom

Tri gore navedene metode koriste bilo što TestNG proizvodi prema zadanim postavkama. Kada timu treba drugačiji izgled, dodatna polja ili prikaz napretka uživo, TestNG otkriva dvije točke proširenja umjesto da vas traži da zakrpate zadano izvješće.

  • ITestListener obavještava se u stvarnom vremenu, kako svaki test počinje, prolazi, ne uspijeva ili se preskače. Koristite ga kada se informacije moraju snimiti u trenutku kada se događaj dogodi - na primjer, snimka zaslona u slučaju neuspjeha.
  • IReporter obavještava se jednom, nakon što je svaki paket završen, i prima objekte koji opisuju cijelo izvođenje. Koristite ga kada je izlaz gotov dokument, kao što je PDF ili prilagođena HTML stranica.

Slušač koji svaki ishod unosi u izvješće putem klase Reporter izgleda ovako.

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

Registracija slušača se vrši u istoj datoteci testng.xml koju ste već kreirali za DemoA i 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>

Dok eksperimentirate, vrijedi znati dva prekidača naredbenog retka. -d opcija mijenja direktorij u koji se zapisuju izvješća i -usedefaultlisteners lažno isključuje ugrađene reportere tako da se pokreće samo vaš vlastiti slušač. Oba su opisana u službenom TestNG evidentiranje i dokumentiranje rezultata, koji također dokumentira svojstva koja prihvaća ugrađeni XML reporter.

Slušač se registrira jednom, a zatim se primjenjuje na svaku klasu u paketu, zbog čega timovi koji rade s velikim ispitivanje automatizacije Paketi to obično preferiraju u odnosu na ručno dodavanje redaka zapisnika svakoj metodi testiranja.

TestNG Zadana izvješća u usporedbi s ExtentReports i Allure

Zadana izvješća su dovoljna za mali paket, ali ne sadrže povijest ni grafikone. Dvije biblioteke otvorenog koda obično se dodaju kada paket raste i obje rade s TestNG.

Sposobnost TestNG zadani Izvješća o opsegu Izvješće o privlačnosti
Napor postavljanja Ništa — automatski se proizvodi Dodajte biblioteku i napišite kod za izvještavanje Dodajte adapter, a zatim generirajte izvješće iz rezultata
Grafikoni i nadzorne ploče Ne Da Da
Slike Samo putem Reporter.log oznake Ugrađeni API za priloge Ugrađeni API za priloge
Povijest i trendovi trčanja Ne Putem opcionalne serverske komponente Da, iz pohranjenih prethodnih rezultata
Okvirno pokriće TestNG samo Java i .NET Neovisan o okviru

Započnite s zadanim izvješćima dok je paket mali. Prijeđite na Izvješća o opsegu kada dionici zatraže čitljive nadzorne ploče i Izvješće o privlačnosti kada povijest nestabilnih testova u različitim verzijama postane važno pitanje. Što god odaberete, izvješće obično objavljuje zadatak izgradnje, što je obuhvaćeno u Jenkins kontinuirana integracija udžbenik.

Pitanja i odgovori

Mapa se pojavljuje tek nakon TestNG završava izvođenje i projekt se osvježava u IDE-u. Prazna mapa obično znači da je klasa pokrenuta kao obična Java aplikacija ili su zadani slušatelji bili isključeni, tako da se nijedan reporter nikada nije pokrenuo.

Da. TestNG zapisuje u test-output prema zadanim postavkama. U naredbeni redak unesite opciju -d ili postavite izlazni direktorij u konfiguraciji pokretanja IDE-a ili u postavkama Maven Surefirea koje pokreću paket.

Snimite sliku unutar metode slušača kao što je onTestFailure, spremite datoteku pored izvješća, a zatim napišite HTML oznaku slike putem Reporter.log. Izvješće prikazuje oznake tako da se slika pojavljuje pored neuspjele metode.

TestNG sam po sebi ne šalje poštu. Timovi obično prilažu emailable-report.html iz zadatka izgradnje, na primjer Jenkins korak slanja e-pošte nakon izgradnje ili dodavanje male rutine za slanje pošte unutar implementacije IReportera.

Modeli umjetne inteligencije grupiraju neuspjehe po stogu-tracsličnost, odvojiti stvarne nedostatke od kvarova u okruženju ili vremenu te rangirati koje neuspješne metode treba prvo pregledati. Dugi popis izvješća za slanje e-poštom postaje kratki red prioriteta za tim.

GitHub kopilot može iz kratkog komentara izraditi klase slušatelja, naredbe Reporter.log i unose testng.xml. Revpregledajte svaki prijedlog, jer generirani slušači često propuštaju točne metode sučelja TestNG očekuje.

Nakon što se IRetryAnalyzer priključi, svaki ponovni pokušaj se bilježi uz konačni ishod. Zadano izvješće stoga prikazuje svaki pokušaj, tako da se nestabilan test može pojaviti i kao neuspjeh i kao prolaz u istom pokretanju.

U naredbenom retku proslijedite -usedefaultlisteners false ili postavite useDefaultListeners na false u konfiguraciji Maven Surefirea ili Anta. Zatim se pokreću samo oni koji izvještavaju koje izričito registrirate, što skraćuje vrijeme izvođenja za vrlo velike pakete.

Sažmite ovu objavu uz: