TestNG Generarea rapoartelor în Selenium: Cum se generează?

⚡ Rezumat inteligent

TestNG Rapoartele sunt fișierele HTML cu rezultate implicite care TestNG scrie în folderul test-output după fiecare rulare, arătând care cazuri de testare au trecut, au eșuat sau au fost omise, plus orice jurnal Reporter.

  • 🔘 Ieșire implicită: Fiecare TestNG `run` creează un folder de ieșire a testului fără cod suplimentar.
  • ☑️ Două vizualizări HTML: emailable-report.html rezumă rezultatele, index.html oferă linkuri către vizualizările detaliate.
  • Jurnalele reporterilor: Reporter.log() scrie mesaje personalizate direct în raportul generat.
  • 🧪 Suita rulează: Rularea testng.xml grupează mai multe clase într-un singur raport consolidat.
  • 🛠️ Personalizare: ITestListener și IReporter permit unei echipe să își construiască propriul format de raport.
  • 📊 Dincolo de valorile implicite: ExtentReports și Allure adaugă diagrame, istoric și atașamente de capturi de ecran.

TestNG generarea de rapoarte în Selenium

Care sunt TestNG Rapoarte?

TestNG Rapoarte sunt rapoartele HTML implicite care sunt generate odată ce cazurile de testare sunt executate folosind TestNG. Aceste rapoarte vă ajută să identificați informațiile despre cazurile de testare și starea unui proiect. TestNG raportează în Selenium înregistrează trei rezultate pentru fiecare metodă de testare — reușită, eșuată și omisă — astfel încât să poți verifica datele despre cazurile de testare dintr-o privire.

Generarea rapoartelor este foarte importantă atunci când efectuați Testarea automată, precum și pentru Testarea manuală.

  • Privind rezultatul, puteți identifica cu ușurință câte cazuri de testare sunt trecute, eșuate și omise.
  • Privind raportul, veți afla care este stadiul proiectului.

Selenium WebDriver este utilizat pentru automatizarea aplicației web, dar nu generează rapoarte singur.

  • TestNG va genera raportul implicit.
  • Când executați fișierul testng.xml și actualizați proiectul, veți obține un folder de ieșire a testului, iar acel folder conține ieșirea raportării de la TestNG.
  • Faceți clic dreapta pe fișierul emailable-report.html și selectați opțiunea Deschidere cu browserul web.

Notă: Comportamentul descris aici este neschimbat în TestNG 7.x. Lansări de la TestNG Versiunile 7.6 și ulterioare necesită JDK 11 sau o versiune ulterioară, așadar este posibil ca un proiect mai vechi să necesite creșterea nivelului JDK înainte de generarea rapoartelor.

Tipuri de TestNG Rapoarte în folderul de ieșire a testului

Înainte de a deschide orice fișier, este util să știți ce conține de fapt folderul test-output. TestNG scrie mai multe artefacte la fiecare rundă, iar fiecare răspunde la o întrebare diferită.

Fișier sau folder Ce conține Când este util
index.html Raportul de destinație care face legătura cu rezultatele, grupurile, orele și vizualizările de ieșire ale raportorului. Analizând în detaliu o singură rundă.
raport-transferabil-prin-email.html O singură pagină independentă care rezumă metodele reușite, eșuate și omise pentru fiecare clasă. Partajarea unui rezultat cu persoane care nu deschid proiectul.
testng-results.xml Fișierul XML lizibil de mașină, scris de raportorul XML încorporat, cu starea și durata fiecărei metode. Alimentarea unui tablou de bord sau a unui parser personalizat.
junitreports JUnit-formatează fișiere XML, câte unul per clasă de test. Orice plugin CI care citește JUnit formatul rezultatului.
testng-eșuat.xml Un fișier suite generat care listează doar metodele care au eșuat. Reexecutarea doar a eșecurilor în loc de întreaga suită.

Cele două fișiere HTML sunt cele pe care le deschide în continuare acest tutorial, așadar ghidul de mai jos începe cu emailable-report.html.

Cum se generează rapoarte în Selenium

Metoda-1: emailable-report.html

  1. Faceți clic pe opțiunea „emailable-report.html”
  2. Faceți clic pe opțiunea browser web

Captura de ecran de mai jos arată fișierul emailable-report.html deschis din folderul test-output.

Selectarea emailable-report.html în interiorul TestNG folderul de ieșire a testului

Ieșirea raportează în TestNG raportarea va arăta ca mai jos dacă ambele clase sunt promovate:

TestNG raport prin e-mail care arată clasele de testare DemoA și DemoB promovate

Luați în considerare scenariul în care eșuați intenționat cazul de testare, adică clasa DemoB. Apoi convertiți ambele clase în fișierul suită testng.xml și rulați-l. Atunci rezultatul va arăta astfel. Acesta va arăta cazuri de testare nereușite.

Acesta este rezultatul pentru clasa DemoB:

Raport prin e-mail care evidențiază cazul de testare DemoB eșuat intenționat

În mod similar, rezultatul pentru clasa DemoA va arăta astfel:

Rând de rezumat al raportului care poate fi trimis prin e-mail pentru clasa DemoA care a trecut

Metoda-2: index.html

  1. Faceți clic dreapta pe index.html din directorul proiectului.
  2. Selectați opțiunea deschisă cu opțiunea browserului web. Acesta va afișa rezultatul în următoarea ordine.

Captura de ecran de mai jos arată fișierul index.html deschis din directorul proiectului.

Deschiderea fișierului index.html din directorul proiectului într-un browser web

Rezultatul va arăta astfel:

TestNG pagina de destinație a raportului index.html care listează vizualizările rezultatelor execuției

Metoda-3: Clasa Reporter

Alături de acestea TestNG metode de raportare generate, puteți utiliza fișierul object.properties pentru a stoca jurnalele generate de sistem, precum și jurnalele generate de utilizator. Dar una dintre cele mai simple moduri de a stoca informațiile de jurnal în cadrul testării este utilizarea Clasa Reporterului.

Reporter.conectați-vă Selenium este o clasă prezentă în TestNG pentru Selenium raportare. Oferă 4 metode diferite de stocare a informațiilor de jurnal, acestea sunt:

  1. Reporter.log(Șir s);
  2. Reporter.log(String s, Boolean logToStandardOut);
  3. Reporter.log(String s, nivel int);
  4. Reporter.log(String s, int level, boolean logToStandardOut);

Al doilea argument decide dacă mesajul este transmis în consolă, precum și în raport, iar argumentul level controlează gradul de verbositate la care este păstrat mesajul.

Exemplu:

Creați două clase, cum ar fi DemoA și DemoB și scrieți următorul cod în interiorul claselor.

Pentru Clasa DemoA;

  • Code pentru DemoA este deja explicat mai sus. Aici folosești metoda log a clasei Reporter. (Pentru implementarea unei clase de raportare proprii, clasa trebuie să implementeze interfața org.testng.IReporter.)
  • Metoda log este o metodă statică a clasei Reporter. Deci accesați această metodă prin clasa Reporter.
  • Metoda jurnalului este folosită pentru a stoca informațiile de jurnal care sunt scrise în program. Privind informațiile din jurnal, veți ajunge cu ușurință să știți unde exact este oprită execuția programului.

Captura de ecran de mai jos prezintă apelurile Reporter.log plasate în interiorul clasei DemoA.

Instrucțiuni Reporter.log scrise în interiorul clasei de test DemoA

Pentru clasa DemoB:

Instrucțiuni Reporter.log scrise în interiorul clasei de test DemoB

  • Acum, Creați fișierul testng.xml selectând aceste două clase și
  • Selectați rulați ca și
  • Faceți clic pe conversia în testng.
  • Apoi rulați acest fișier testng.xml selectând rulați ca și selectați suita testng.
  • Apoi reîmprospătați proiectul, deschideți folderul test-output.
  1. În folderul test-output, deschideți emailable-report.html. Va arata ca:

    Raport prin e-mail generat după rularea suitei testng.xml DemoA și DemoB

    În mod similar, veți avea și un proiect de ieșire pentru Demo B.

  2. În folderul test-output, deschideți fișierul index.html. Va arăta astfel:

    raport index.html generat după rularea suitei testng.xml

Faceți clic pe ieșirea reporterului. Se va deschide informațiile de înregistrare, orice este scris în metodele de testare.

TestNG vizualizare de ieșire a raportorului care listează mesajele înregistrate de metodele de testare

Faceți clic pe Times. Acesta va arăta cât timp a durat pentru a rula metoda de testare prezentă în clasă folosind TestNG instrumente de raportare.

TestNG Vizualizare timpi care arată cât a durat rularea fiecărei metode de testare

Cum să personalizați TestNG Rapoarte cu ITestListener și IReporter

Cele trei metode de mai sus folosesc orice TestNG produce în mod implicit. Când o echipă are nevoie de un aspect diferit, câmpuri suplimentare sau o vizualizare a progresului în timp real, TestNG expune două puncte de extensie în loc să vă ceară să corectați raportul implicit.

  • ITestListener este notificat în timp real, pe măsură ce fiecare test începe, trece, eșuează sau este omis. Folosește-l atunci când informațiile trebuie capturate în momentul în care are loc evenimentul - de exemplu, o captură de ecran la eșec.
  • Reporter este notificat o singură dată, după ce fiecare suită s-a terminat, și primește obiecte care descriu întreaga rulare. Folosește-l atunci când rezultatul este un document finalizat, cum ar fi un PDF sau o pagină HTML personalizată.

Un ascultător care introduce fiecare rezultat în raport prin intermediul clasei Reporter arată astfel.

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

Înregistrarea listener-ului se face în același fișier testng.xml din suita pe care l-ați creat deja pentru 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>

Două opțiuni din linia de comandă merită să fie cunoscute în timp ce experimentați. -d opțiunea schimbă directorul în care sunt scrise rapoartele și -usedefaultlisteners fals dezactivează reporterii încorporați, astfel încât să ruleze doar propriul ascultător. Ambele sunt descrise în manualul oficial TestNG înregistrarea în jurnal și documentarea rezultatelor, care documentează și proprietățile acceptate de raportorul XML încorporat.

Un ascultător este înregistrat o singură dată și apoi se aplică fiecărei clase din suită, motiv pentru care echipele care rulează clase mari testarea automatizării Suitele preferă de obicei acest lucru în locul adăugării manuale a liniilor de jurnal la fiecare metodă de testare.

TestNG Rapoarte implicite vs. ExtentReports vs. Allure

Rapoartele implicite sunt suficiente pentru o suită mică, dar nu conțin istoric și nici diagrame. Două biblioteci open source sunt de obicei adăugate atunci când o suită crește și ambele funcționează cu TestNG.

Capacitate TestNG lipsă ExtentReports Raport Allure
Efort de configurare Niciunul — produs automat Adăugați biblioteca și scrieți codul reporterului Adăugați adaptorul, apoi generați raportul din rezultate
Diagrame și tablouri de bord Nu Da Da
Imagini Numai prin markup-ul Reporter.log API-ul atașamentelor încorporat API-ul atașamentelor încorporat
Istoricul și tendințele rulării Nu Prin componenta opțională a serverului Da, din rezultatele anterioare stocate
Acoperirea cadrului TestNG Java și .NET Agnostic cadru

Începeți cu rapoartele implicite cât timp suita este mică. Treceți la ExtentReports atunci când părțile interesate solicită tablouri de bord lizibile și Raport Allure când istoricul testelor instabile în diferite build-uri devine întrebarea care contează. Indiferent de alegerea dvs., raportul este publicat în mod normal de jobul de build, care este acoperit în Jenkins integrare continuă tutorial.

Întrebări frecvente

Dosarul apare numai după TestNG termină o rulare și proiectul este reîmprospătat în IDE. Un folder gol înseamnă de obicei că clasa a fost lansată ca un fișier simplu Java aplicație sau ascultătorii impliciți erau dezactivați, așa că niciun reporter nu a candidat vreodată.

Da. TestNG scrie în test-output în mod implicit. Transmiteți opțiunea -d în linia de comandă sau setați directorul de ieșire în configurația de rulare IDE sau în setările Maven Surefire care lansează suita.

Capturați imaginea în interiorul unei metode de ascultare, cum ar fi onTestFailure, salvați fișierul lângă raport, apoi scrieți o etichetă de imagine HTML prin Reporter.log. Raportul redă markup-ul, astfel încât imaginea apare lângă metoda eșuată.

TestNG în sine nu trimite e-mailuri. Echipele atașează în mod normal emailable-report.html dintr-un job de compilare, de exemplu, un Jenkins pasul de creare a e-mailului după crearea acestuia sau adăugarea unei mici rutine de e-mail în cadrul unei implementări IReporter.

Modelele IA grupează eșecurile după stivătracsimilaritatea, separați defectele reale de erorile de mediu sau de sincronizare și clasificați metodele defecte care trebuie inspectate primele. O listă lungă de rapoarte care pot fi trimise prin e-mail devine o coadă scurtă cu priorități pentru echipă.

Copilotul GitHub poate scheleta clasele de ascultare, instrucțiunile Reporter.log și intrările testng.xml dintr-un comentariu scurt. RevVezi fiecare sugestie, deoarece listenerele generate adesea ratează metodele exacte ale interfeței TestNG se asteapta.

Odată ce un IRetryAnalyzer este atașat, fiecare reîncercare este înregistrată alături de rezultatul final. Prin urmare, raportul implicit arată fiecare încercare, astfel încât un test instabil poate apărea atât ca eșec, cât și ca reușită în aceeași rulare.

Transmiteți -usedefaultlisteners false în linia de comandă sau setați useDefaultListeners la false în configurația Maven Surefire sau Ant. Doar reporterii pe care îi înregistrați explicit apoi rulează, ceea ce scurtează execuția pentru suite foarte mari.

Rezumați această postare cu: