TestNG Raporttien luominen sisään Selenium: Kuinka luoda?

⚡ Älykäs yhteenveto

TestNG Raportit ovat oletusarvoisia HTML-tulostiedostoja, jotka TestNG kirjoittaa testituloskansioon jokaisen suorituksen jälkeen ja näyttää mitkä testitapaukset läpäisivät, epäonnistuivat tai ohitettiin, sekä mahdolliset Reporter-lokit.

  • 🔘 Oletuslähtö: Joka TestNG run luo testitulostuskansion ilman ylimääräistä koodia.
  • ☑️ Kaksi HTML-näkymää: emailable-report.html tiivistää tulokset, index.html linkittää yksityiskohtaisiin näkymiin.
  • Toimittajan lokit: Reporter.log() kirjoittaa mukautettuja viestejä suoraan luotuun raporttiin.
  • 🧪 Suite-paketit: testng.xml-funktion suorittaminen ryhmittelee useita luokkia yhdeksi yhdistetyksi raportiksi.
  • 🛠️ Räätälöinti: ITestListener ja IReporter antavat tiimin rakentaa oman raporttimuotonsa.
  • 📊 Oletusarvojen lisäksi: ExtentReports ja Allure lisäävät kaavioita, historiaa ja kuvakaappausliitteitä.

TestNG raporttien luominen Selenium

Mitä ovat TestNG Raportit?

TestNG Raportit ovat oletusarvoisia HTML-raportteja, jotka luodaan, kun testitapaukset on suoritettu käyttämällä TestNG. Nämä raportit auttavat sinua tunnistamaan tiedot testitapauksista ja projektin tilasta. TestNG raportteja Selenium kirjaa jokaiselle testimenetelmälle kolme tulosta – läpäisty, hylätty ja ohitettu – jotta voit tarkistaa testitapausten tiedot yhdellä silmäyksellä.

Raporttien luominen on erittäin tärkeää, kun teet automaatiotestausta sekä manuaalista testausta.

  • Katsomalla tulosta voit helposti tunnistaa, kuinka monta testitapausta on hyväksytty, epäonnistunut ja ohitettu.
  • Raporttia katsomalla saat selville, mikä projektin tila on.

Selenium WebDriveria käytetään verkkosovelluksen automatisointiin, mutta se ei luo raportteja erikseen.

  • TestNG luo oletusraportin.
  • Kun suoritat testng.xml-tiedoston ja päivität projektin, saat käyttöön test-output-kansion, joka sisältää raportin tulosteen. TestNG.
  • Napsauta hiiren kakkospainikkeella emailable-report.html-tiedostoa ja valitse Avaa verkkoselaimella.

Huomautus: tässä kuvattu käyttäytyminen on muuttumaton TestNG 7.x. Julkaisut alkaen TestNG Versioista 7.6 eteenpäin vaaditaan JDK 11 tai uudempi, joten vanhemmassa projektissa JDK-tasoa saatetaan joutua nostamaan ennen raporttien tuottamista.

Tyyppisiä TestNG Raportit testituloskansiossa

Ennen yksittäisen tiedoston avaamista on hyödyllistä tietää, mitä test-output-kansio todellisuudessa sisältää. TestNG kirjoittaa useita artefakteja jokaisella ajokerralla, ja jokainen niistä vastaa eri kysymykseen.

Tiedosto tai kansio Mitä se pitää sisällään Kun se on hyödyllistä
index.html Laskeutumisraportti, joka linkittää tuloksiin, ryhmiin, aikoihin ja raportoijan tuotosnäkymiin. Yhden juoksun yksityiskohtainen tarkastelu.
sähköpostitse lähetettävä raportti.html Yksi itsenäinen sivu, joka yhteenvetää luokkakohtaisesti hyväksytyt, epäonnistuneet ja ohitetut metodit. Tuloksen jakaminen ihmisten kanssa, jotka eivät avaa projektia.
testng-results.xml Sisäänrakennetun XML-raportointityökalun kirjoittama koneellisesti luettava XML, jossa on menetelmäkohtainen tila ja kesto. Syöttää tietoa kojelaudalle tai mukautettuun jäsentimeen.
junitreports JUnit-muotoiset XML-tiedostot, yksi testiluokkaa kohden. Mikä tahansa CI-laajennus, joka lukee JUnit tulosmuoto.
testng-failed.xml Luotu suite-tiedosto, joka listaa vain epäonnistuneet metodit. Suoritetaan uudelleen vain virheet koko paketin sijaan.

Tämä tutoriaali avaa seuraavaksi nämä kaksi HTML-tiedostoa, joten alla oleva läpikäynti alkaa tiedostosta emailable-report.html.

Kuinka luoda raportteja sisään Selenium

Tapa 1: emailable-report.html

  1. Napsauta vaihtoehtoa "emailable-report.html"
  2. Napsauta vaihtoehtoa verkkoselain

Alla olevassa kuvakaappauksessa näkyy, kuinka emailable-report.html-tiedosto avataan test-output-kansiosta.

Valitsemalla tiedoston emailable-report.html TestNG testituloskansio

Tuotos raportoi sisään TestNG raportointi näyttää seuraavalta, jos molemmat luokat on hyväksytty:

TestNG sähköpostitse lähetettävä raportti, joka näyttää läpäistyt DemoA- ja DemoB-testiluokat

Harkitse tilannetta, jossa olet tarkoituksella epäonnistunut testitapauksessa eli DemoB-luokassa. Muunna sitten molemmat luokat testng.xml-tiedostoksi ja suorita se. Sitten tulos näyttää tältä. Se näyttää epäonnistuneet testitapaukset.

Tämä on tulos DemoB-luokasta:

Sähköpostitse lähetettävä raportti, jossa korostetaan tahallisesti epäonnistunutta DemoB-testitapausta

Vastaavasti luokan demoA:n tulos näyttää tältä:

Sähköpostitse lähetettävä raportin yhteenvetorivi läpäisevälle DemoA-kurssille

Tapa 2: index.html

  1. Napsauta hiiren kakkospainikkeella projektihakemistossa olevaa index.html-tiedostoa.
  2. Valitse vaihtoehto avata verkkoselaimen kanssa. Se näyttää tuloksen seuraavassa järjestyksessä.

Alla olevassa kuvakaappauksessa näkyy, kuinka index.html-tiedosto avataan projektihakemistosta.

Index.html-tiedoston avaaminen projektihakemistosta verkkoselaimessa

Tulos näyttää tältä:

TestNG index.html-raportin aloitussivu, jossa luetellaan suorituksen tulokset

Menetelmä 3: Reportteriluokka

Näiden ohella TestNG raporttien luomia menetelmiä, voit käyttää object.properties-tiedostoa tallentaaksesi järjestelmän luomat lokit sekä käyttäjien luomat lokit. Mutta yksi yksinkertaisimmista tavoista tallentaa lokitietoja testauksessa on käyttää Toimittajaluokka.

Reporter.kirjaudu sisään Selenium on luokka läsnä TestNG varten Selenium raportointi. Se tarjoaa neljä erilaista tapaa tallentaa lokitietoja:

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

Toinen argumentti päättää, toistetaanko viesti sekä konsoliin että raporttiin, ja level-argumentti ohjaa viestin yksityiskohtaisuutta.

esimerkki:

Luo kaksi luokkaa, kuten DemoA ja DemoB, ja kirjoita seuraava koodi luokkiin.

Luokka DemoA;

  • Code DemoA:lle on jo selitetty yllä. Tässä käytät Reporter-luokan lokimenetelmä. (Oman raportointiluokan toteuttamiseksi luokan on toteutettava org.testng.IReporter-rajapinta.)
  • Lokimenetelmä on Reporter-luokan staattinen menetelmä. Joten käytät tätä menetelmää Reporter-luokan kautta.
  • Lokimenetelmää käytetään ohjelman sisällä kirjoitettujen lokitietojen tallentamiseen. Katsomalla lokitietoja saat helposti selville, missä tarkalleen ohjelman suoritus on pysäytetty.

Alla olevassa kuvakaappauksessa näkyvät DemoA-luokan sisällä olevat Reporter.log-kutsuja.

DemoA-testiluokan sisällä kirjoitetut Reporter.log-lausekkeet

Luokka DemoB:

DemoB-testiluokan sisällä kirjoitetut Reporter.log-lausekkeet

  • Luo nyt testng.xml-tiedosto valitsemalla nämä kaksi luokkaa ja
  • Valitse Suorita ja
  • Napsauta muuntaa testiksi.
  • Suorita sitten tämä testng.xml-tiedosto valitsemalla Suorita ja valitse testng suite.
  • Päivitä sitten projekti ja avaa testitulostuskansio.
  1. Avaa testitulostuskansiossa emailable-report.html. Se näyttää tältä:

    Sähköpostitse lähetettävä raportti, joka on luotu DemoA- ja DemoB-testing.xml-paketin suorittamisen jälkeen

    Samoin sinulla on myös Output for Demo B -projekti.

  2. Avaa test-output-kansiossa oleva index.html-tiedosto. Se näyttää tältä:

    index.html-raportti, joka on luotu testng.xml-paketin suorittamisen jälkeen

Napsauta reportterin tulosta. Se avaa kirjaustiedot riippumatta siitä, mitä testimenetelmissä on kirjoitettu.

TestNG raportointitulosnäkymä, jossa luetellaan testimenetelmien kirjaamat viestit

Napsauta Times-kohtaa. Se näyttää kuinka paljon aikaa kului luokassa olevan testimenetelmän suorittamiseen TestNG raportointityökalut.

TestNG Aikanäkymä, joka näyttää, kuinka kauan kunkin testimenetelmän suorittaminen kesti

Kuinka mukauttaa TestNG Raportit ITestListenerin ja IReporterin avulla

Yllä olevat kolme menetelmää käyttävät mitä tahansa TestNG tuottaa oletuksena. Kun tiimi tarvitsee erilaisen asettelun, lisäkenttiä tai reaaliaikaisen edistymisnäkymän, TestNG paljastaa kaksi laajennuspistettä sen sijaan, että pyytäisi sinua korjaamaan oletusraportin.

  • ITestListener saa reaaliaikaisen ilmoituksen kunkin testin alkaessa, läpäistessä, epäonnistuessa tai ohitettaessa. Käytä sitä, kun tiedot on kerättävä tapahtumahetkellä – esimerkiksi kuvakaappaus epäonnistumisesta.
  • IReporter saa ilmoituksen kerran jokaisen suoritussarjan päättymisen jälkeen ja vastaanottaa koko suoritusajon kuvaavat objektit. Käytä sitä, kun tulosteena on valmis dokumentti, kuten PDF tai mukautettu HTML-sivu.

Kuuntelija, joka lisää jokaisen tuloksen raporttiin Reporter-luokan kautta, näyttää tältä.

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

Kuuntelijan rekisteröinti tehdään samassa testng.xml-tiedostossa, jonka olet jo luonut DemoA:lle ja DemoB:lle.

<suite name="Demo Suite">
  <listeners>
    <listener class-name="ReportListener" />
  </listeners>
  <test name="Demo Test">
    <classes>
      <class name="DemoA" />
      <class name="DemoB" />
    </classes>
  </test>
</suite>

Kaksi komentorivivalitsinta on hyvä tietää kokeillessa. -d vaihtoehto vaihtaa hakemistoa, johon raportit kirjoitetaan, ja -usedefaultlisteners false kytkee sisäänrakennetut raportointitoiminnot pois päältä, jotta vain oma kuuntelijasi toimii. Molemmat on kuvattu virallisessa TestNG lokikirjaus ja tulosten dokumentointi, joka dokumentoi myös sisäänrakennetun XML-raportointityökalun hyväksymät ominaisuudet.

Kuuntelija rekisteröidään kerran ja sitten se koskee jokaista sarjan luokkaa, minkä vuoksi suuria ryhmiä automaatiotestaus ohjelmistopaketit suosivat sitä yleensä sen sijaan, että lisäisivät lokirivit jokaiseen testimenetelmään manuaalisesti.

TestNG Oletusraportit vs. ExtentReports vs. Allure

Oletusraportit riittävät pieneen ohjelmistopakettiin, mutta niissä ei ole historiaa eikä kaavioita. Kaksi avoimen lähdekoodin kirjastoa liitetään yleensä ohjelmistopaketin kasvaessa, ja molemmat toimivat seuraavien kanssa: TestNG.

Capability TestNG oletusarvo Laajuusraportit Allure-raportti
Asennustyö Ei mitään – tuotetaan automaattisesti Lisää kirjasto ja kirjoita raportointikoodi Lisää sovitin ja luo sitten raportti tuloksista
Kaaviot ja kojelaudat Ei Kyllä Kyllä
Kuvakaappauksia Vain Reporter.log-merkintöjen kautta Sisäänrakennettu liitetiedostojen API Sisäänrakennettu liitetiedostojen API
Juoksuhistoria ja trendit Ei Valinnaisen palvelinkomponentin kautta Kyllä, tallennetuista aiemmista tuloksista
Viitekehyksen kattavuus TestNG vain Java ja .NET Kehysriippumaton

Aloita oletusarvoisilla raporteilla, kun ohjelmistopaketti on pieni. Siirry kohtaan Laajuusraportit kun sidosryhmät pyytävät luettavia koontinäyttöjä ja Allure-raportti kun epätasaisen testihistorian tarkastelu eri koontiversioissa tulee ratkaisevaksi kysymykseksi. Valitsitpa kumman tahansa, raportti julkaistaan ​​yleensä koontityön mukaan, mitä käsitellään kohdassa Jenkins jatkuva integrointi opetusohjelma.

UKK

Kansio tulee näkyviin vasta sen jälkeen, kun TestNG suorituksen päättyy ja projekti päivittyy IDE:ssä. Tyhjä kansio tarkoittaa yleensä, että luokka käynnistettiin tavallisena Java sovellus, tai oletuskuuntelijat oli kytketty pois päältä, joten yksikään toimittaja ei koskaan toiminut.

Kyllä. TestNG kirjoittaa oletuksena testitulokseen. Anna komentoriviltä -d-optio tai aseta tulostushakemisto IDE-ajokokoonpanossa tai Maven Surefire -asetuksissa, jotka käynnistävät sarjan.

Tallenna kuva kuuntelijametodin, kuten onTestFailure, sisällä, tallenna tiedosto raportin viereen ja kirjoita sitten HTML-kuvatunniste Reporter.log-tiedoston kautta. Raportti renderöi merkinnät, joten kuva näkyy epäonnistuneen metodin vieressä.

TestNG itse ei lähetä sähköpostia. Tiimit liittävät yleensä mukaan emailable-report.html-tiedoston koontityöstä, esimerkiksi Jenkins sähköpostin luonnin jälkeinen vaihe tai pienen sähköpostirutiinin lisääminen IReporter-toteutuksen sisällä.

Tekoälymallit ryhmittelevät virheet pinoamallatracErottele aidot viat ympäristö- tai ajoitusvirheistä ja aseta järjestykseen ne menetelmät, jotka tarkastetaan ensin. Pitkästä sähköpostitse lähetettävien raporttien luettelosta tulee lyhyt priorisoitu jono tiimille.

GitHub Copilot voi rakentaa kuuntelijaluokkia, Reporter.log-lausekkeita ja testng.xml-merkintöjä lyhyestä kommentista. Revkatsoa jokaista ehdotusta, koska luodut kuuntelijat usein unohtavat tarkat rajapinnan metodit TestNG odottaa.

Kun IRetryAnalyzer on liitetty, jokainen uudelleenyritys tallennetaan lopputuloksen rinnalle. Oletusarvoinen raportti näyttää siis kaikki yritykset, joten epävakaa testi voi näkyä sekä epäonnistuneena että onnistuneena saman suorituksen aikana.

Anna komentorivillä parametri -usedefaultlisteners false tai aseta useDefaultListeners arvoksi false Maven Surefire- tai Ant-kokoonpanossa. Vain eksplisiittisesti rekisteröimäsi raportoijat suoritetaan, mikä lyhentää suoritusaikaa erittäin suurissa paketeissa.

Tiivistä tämä viesti seuraavasti: