Mukauta, PDF ja amp; Lähetä TestNG-raportit sähköpostilla Selenium WebDriver -sovelluksessa

Sisällysluettelo:

Anonim

Ennen kuin tutkimme mitään muuta, ymmärretään ensin -

Miksi tarvitsemme raportointia?

Kun käytämme Seleniumia tai muuta automaatiotyökalua, suoritamme toimintoja verkkosovelluksessa. Mutta automatisoinnin tarkoitus ei ole vain testattavan sovelluksen käyttäminen. Meidän, kuten automaatiotestaajan, on tarkoitus testata sovellusta, löytää virheitä ja ilmoittaa siitä kehitystiimille tai ylemmälle johdolle. Tässä raportoinnilla on merkitystä ohjelmistojen testausprosessille

TestNG-raportointi

TestNG-kirjasto tarjoaa erittäin kätevän raportointiominaisuuden. Suorituksen jälkeen Testng luo testitulosteen kansion projektin juurelle. Tämä kansio sisältää kahden tyyppisiä raportteja -

Index.html: Tämä on täydellinen raportti nykyisestä suorituksesta, joka sisältää tietoja, kuten virhe, ryhmät, aika, reportterilokit, testng XML-tiedostot.

emailable-report.html: Tämä on yhteenvetoraportti nykyisestä testin suorituksesta, joka sisältää Test Case -viestin vihreällä (läpäistävissä testitapauksissa) ja punaisella (epäonnistuneilla testitapauksilla) korostuksella.

TestNG-raportin mukauttaminen

TestNG-raportointi on melko kätevä, mutta silti tarvitsemme joskus vähemmän tietoja raporteissa tai haluamme näyttää raportit muussa muodossa, kuten pdf, excel jne., Tai haluamme muuttaa raportin asettelua.

TestNG-raporttia voidaan mukauttaa kahdella tavalla

  • ITestListener-käyttöliittymän käyttäminen:
  • IReporter Interface -sovelluksen käyttö:

ITestListener-liitäntä

Käytämme tätä käyttöliittymää, kun meidän on mukautettava reaaliaikainen raportti. Toisin sanoen, jos suoritamme joukon testitapauksia TetNG-paketissa ja haluamme saada raportin jokaisesta testitapauksesta, meidän on jokaisen testitapauksen jälkeen otettava käyttöön ITestListener-rajapinta. Tämä käyttöliittymä ohittaa onTestFailure, onTestStart, onTestSkipped -menetelmän lähettääksesi nykyisen testitapauksen oikean tilan.

Tässä ovat vaiheet, joita seuraamme

  • Luo luokka sanoin RealGuru99Report ja ota käyttöön iTestListener.
  • Toteuta iTestListener-menetelmät
  • Luo testimenetelmä ja lisää RealGuru99Report-luokka kuuntelijaksi Testimenetelmä-luokassa.

Koodiesimerkki

RealGuru99TimeReport.java on reaaliaikainen raportointiluokka. Se ottaa käyttöön ITestListener-käyttöliittymän raportointia varten

paketti testNGReport.realTimeReport;tuo org.testng.ITestContext;tuo org.testng.ITestListener;tuo org.testng.ITestResult;julkinen luokka RealGuru99TimeReport toteuttaa ITestListener {@Ohittaapublic void onStart (ITestContext arg0) {System.out.println ("Suorituksen aloitus (TEST) ->" + arg0.getName ());}@Ohittaapublic void onTestStart (ITestResult arg0) {System.out.println ("Testi aloitettu ->" + arg0.getName ());}@Ohittaapublic void onTestSuccess (ITestResult arg0) {System.out.println ("Test Pass ->" + arg0.getName ());}@Ohittaapublic void onTestFailure (ITestResult arg0) {System.out.println ("Testi epäonnistui ->" + arg0.getName ());}@Ohittaapublic void onTestSkipped (ITestResult arg0) {System.out.println ("Testi ohitettu ->" + arg0.getName ());}@Ohittaapublic void onFinish (ITestContext arg0) {System.out.println ("Suorituksen loppu (TEST) ->" + arg0.getName ());}@Ohittaapublic void onTestFailedButWithinSuccessPercentage (ITestResult arg0) {// TODO Automaattisesti luotu menetelmän tynkä}}

TestGuru99RealReport.java on todellisen raportin testitapaus

paketti testNGReport.realTimeReport;tuo org.testng.Assert;Tuo org.testng.annotations.Kuuntelijat;tuo org.testng.annotations.Test;@Listeners (RealGuru99TimeReport.class)julkinen luokka TestGuru99RealReport {@Testatapublic void testRealReportOne () {Assert.assertTrue (tosi);}@Testatapublic void testRealReportTwo () {Assert.assertTrue (väärä);}// Testitapaus riippuu epäonnistuneesta testcase = testRealReportTwo@Test (riippuuOnMethods = "testRealReportTwo")public void testRealReportThree () {}}

Tulos näyttää tältä

IReporter-liitäntä

Jos haluamme mukauttaa TestNG: n luomaa lopullista testiraporttia, meidän on toteutettava IReporter-käyttöliittymä. Tässä käyttöliittymässä on vain yksi tapa generoida raportti. Tällä menetelmällä on kaikki testin suorituksen tiedot luettelossa , ja voimme luoda raportin sen avulla.

Koodiesimerkki

Guru99Reporter.java on tiedosto, jota käytetään raportin mukauttamiseen

paketti testNGReport.iReporterReport;tuo java.util.Collection;tuo java.util.Date;tuo java.util.List;tuo java.util.Kartta;tuo java.util.Set;tuonti org.testng.IReporter;tuo org.testng.IResultMap;tuo org.testng.ISuite;tuo org.testng.ISuiteResult;tuo org.testng.ITestContext;tuo org.testng.ITestNGMethod;tuo org.testng.xml.XmlSuite;julkinen luokka Guru99Reporter toteuttaa IReporter {@Ohittaapublic void generatorReport (Lista  arg0, Lista  arg1,Merkkijono outputDirectory) {// Tämän menetelmän toinen parametri ISuite sisältää kaikki suoritetut paketit.varten (ISuite iSuite: arg1) {// Hae kartta yhden sviitin tuloksesta kerrallaanKartta  tulokset = iSuite.getResults ();// Hanki tuloskartan avainAseta  avaimet = results.keySet ();// Siirry jokaiseen kartan arvoon yksitellenkohteelle (String key: keys) {// Nykyisen tuloksen kontekstiobjektiITestContext-konteksti = results.get (avain) .getTestContext ();// Print Suite -tiedot konsolissaSystem.out.println ("Paketin nimi ->" + context.getName ()+ ":: Raportin lähtötiedosto ->" + context.getOutputDirectory ()+ ":: Paketin nimi ->" + context.getSuite (). GetName ()+ ":: Suorituksen aloituspäivä ->" + context.getStartDate ()+ ":: Suorituksen lopetuspäivä ->" + context.getEndDate ());// Hae kartta vain epäonnistuneista testitapauksistaIResultMap resultMap = context.getFailedTests ();// Hanki yksityiskohtaiset tiedot epäonnistuneista testitapauksistaKokoelma  FailMethods = resultMap.getAllMethods ();// Silmu yksi kerrallaan kaikissa epäonnistuneissa menetelmissäSystem.out.println ("-------- VIKA TESTITAPAUS ---------");varten (ITestNGMethod iTestNGMethod: FailMethods) {// Tulosta epäonnistuneet testitapauksetSystem.out.println ("TESTCASE-NIMI ->" + iTestNGMethod.getMethodName ()+ "\ nDescription ->" + iTestNGMethod.getDescription ()+ "\ nPriority ->" + iTestNGMethod.getPriority ()+ "\ n: Päivämäärä ->" + uusi päivämäärä (iTestNGMethod.getDate ()));}}}}}

TestGuru99ForReporter.java on demo mukautetulle raportoinnille

paketti testNGReport.iReporterReport;tuo org.testng.Assert;Tuo org.testng.annotations.Kuuntelijat;tuo org.testng.annotations.Test;// Lisää kuuntelija kuuntelemaan raporttia ja kirjoita se, kun testit ovat valmiit@Listeners (arvo = Guru99Reporter.class)julkinen luokka TestGuru99ForReporter {@Test (prioriteetti = 0, kuvaus = "testReporterOne")public void testReporterOne () {// Hyväksytty testiAssert.assertTrue (tosi);}@Test (prioriteetti = 1, kuvaus = "testReporterTwo")public void testReporterTwo () {// Epäonnistunut testitapausAssert.assertTrue (väärä);}}

Tulos on kuin-

PDF ja raporttien sähköposti

Yllä oleva raportin toteutus on melko yksinkertainen ja selkeä, jotta pääset alkuun raportin mukauttamisessa.

Mutta yritysympäristössä sinun on luotava erittäin räätälöityjä raportteja. Tässä on skenaario, jota käsittelemme

  1. Luo mukautettu raportti PDF-muodossa
  2. Ota kuvakaappauksia VAIN virheistä. Linkki kuvakaappauksiin PDF-muodossa
  3. Lähetä PDF-tiedosto

PDF-raportti näyttää tältä

PDF-raportin luomiseen tarvitaan Java API IText . Lataa se täältä. On toinen mukautettu kuunteluluokka, joka tosiasiallisesti toteuttaa tämän IText-purkin ja luo meille pdf-raportin. Lataa se täältä

Yllä olevassa kuvassa on luotu PDF-raportin oletusmuoto. Voit muokata sitä

Näin lähestymme tätä

Vaihe 1) Luo perusluokka

Vaihe 2) Mukauta JypersionListerner.Java (PDF-luomiskoodi)

Vaihe 3) Luo TestGuru99PDFEmail.java, joka suorittaa testitapaukset, luo PDF

Vaihe 4) Liitä koodi TestGuru99PDFEmail.java-tiedostoon lähettääksesi PDF-raportin sähköpostitse

Tarkastellaan näitä vaiheita

Vaihe 1) Luo perusluokka

Tässä perusluokassa on toimintoja WebDriverin luomiseen ja kuvakaappauksen ottamiseen

paketti PDFEmail;tuo java.io.File;tuo org.apache.commons.io.FileUtils;tuo org.openqa.selenium.OutputType;tuo org.openqa.selenium.TakesScreenshot;tuo org.openqa.selenium.WebDriver;tuo org.openqa.selenium.firefox.FirefoxDriver;julkisen luokan BaseClass {staattinen WebDriver-ohjain;julkinen staattinen WebDriver getDriver () {jos (ohjain == tyhjä) {WebDriver-ohjain;System.setProperty ("webdriver.gecko.driver", "C: \\ geckodriver.exe");ohjain = uusi FirefoxDriver ();}paluukuljettaja;}/ *** Tämä toiminto ottaa kuvakaappauksen* @param-verkko-ohjain* @param tiedostoWithPath* @throws Poikkeus* /public static void takeSnapShot (WebDriver webdriver, String fileWithPath) heittää poikkeuksen {// Muunna web-ohjainobjekti TakeScreenshotiksiTakesScreenshot scrShot = ((TakesScreenshot) verkko-ohjain);// Kutsu getScreenshotAs-menetelmä kuvatiedoston luomiseksiTiedosto SrcFile = scrShot.getScreenshotAs (OutputType.FILE);// Siirrä kuvatiedosto uuteen kohteeseenFile DestFile = uusi tiedosto (fileWithPath);// Kopioi tiedosto määränpäähänFileUtils.copyFile (SrcFile, DestFile);}}

Vaihe 2) Mukauta JypersionListener.java

Pidämme kiinni oletusraportista. Mutta teemme 2 mukautusta

  • Koodin lisääminen kehottaa JypersionListeneriä ottamaan kuvakaappauksen virheestä
  • Kuvakaappauksen linkin liittäminen PDF-raporttiin

Lisää koodi liittääksesi kuvakaappauksen PDF-raporttiin

Vaihe 3) Luo TestGuru99PDFEmail.java, joka suorittaa testitapaukset, luo PDF

  • Tässä lisätään JyperionListener.class kuuntelijaksi
  • Suoritamme 3 testitapausta.
  • Assert.assertTrue-ohjelmaa käytettäessä epäonnistumme kahdessa testitapauksessa ohittaessamme vain yhden.
  • Näyttökuva otetaan epäonnistuneista testitapauksista vain mukautuksemme mukaan
paketti PDFEmail;tuo java.util.Kiinteistöt;tuo javax.activation.DataHandler;tuo javax.activation.DataSource;tuo javax.activation.FileDataSource;tuo javax.mail.BodyPart;tuo javax.mail.Message;tuo javax.mail.MessagingException;tuo javax.mail.Multipart;tuo javax.mail.Session;tuo javax.mail.Transport;tuo javax.mail.internet.AddressException;tuo javax.mail.internet.InternetAddress;tuo javax.mail.internet.MimeBodyPart;tuo javax.mail.internet.MimeMessage;tuo javax.mail.internet.MimeMultipart;tuo org.openqa.selenium.WebDriver;tuo org.testng.Assert;tuo org.testng.annotations.AfterSuite;Tuo org.testng.annotations.Kuuntelijat;tuo org.testng.annotations.Test;tuonti toimittaja.JyperionListener;// Lisää kuuntelija pdf-raporttien luomista varten@Listeners (JyperionListener.class)julkinen luokka TestGuru99PDFReport laajentaa BaseClassia {WebDriver-ohjain;// Testcase epäonnistui, joten näyttökuvan luominen@Testatapublic void testPDFReportOne () {ohjain = BaseClass.getDriver ();driver.get ("http://google.com");Assert.assertTrue (väärä);}// Testcase epäonnistui, joten näyttökuvan luominen@Testatapublic void testPDFReporTwo () {ohjain = BaseClass.getDriver ();driver.get ("http: /guru99.com");Assert.assertTrue (väärä);}// Testitapaus hyväksytään, joten siinä ei näytetä mitään@Testatapublic void testPDFReportThree () {ohjain = BaseClass.getDriver ();driver.get ("http://demo.guru99.com");Assert.assertTrue (tosi);}

Vaihe 4) Liitä koodi TestGuru99PDFEmail.java-tiedostoon lähettääksesi PDF-raportin sähköpostitse

  • Lähetämme PDF-raportin sähköpostia @AfterSuite-merkinnällä
  • Lähetämme sähköpostia Gmailin avulla
  • Sähköpostin ottamiseksi käyttöön on tuotava monia kirjastotiedostoja, kuten mail.jar, pop3.jar, smptp.jar jne.
  • Ennen kuin teet tämän, kirjoita lähettäjä, sähköpostiosoite ja salasana
 // Suorita suorituksen jälkeen pdf-raportti sähköpostilla@AfterSuitepublic void tearDown () {sendPDFReportByGMail (" Tämä sähköpostiosoite on suojattu spamboteilta. Tarvitset Javascriptin nähdäksesi sen.", "password", "Tämä sähköpostiosoite on suojattu spamboteilta. Tarvitset JavaScriptin käyttääksesi sitä. "," PDF-raportti "," ");} / ** * Lähetä sähköposti java * @param -palvelusta osoitteesta * @param pass * @param osoitteeseen * @param subject * @param body * / private static void sendPDFReportByGMail (String from, String pass, String to, String subject, String body) {Ominaisuudet rekvisiitta = System.getProperties (); Merkkijono isäntä = "smtp.gmail.com"; props.put ("mail.smtp. starttls.enable "," true "); props.put (" mail.smtp.host ", isäntä); props.put (" mail.smtp.user ", lähettäjä); props.put (" mail.smtp.salasana " ", pass); props.put (" mail.smtp.port "," 587 "); props.put (" mail.smtp.auth "," true "); Istunnon istunto = Session.getDefaultInstance (rekvisiitta); MimeMessage viesti = uusi MimeMessage (istunto);kokeile {// Aseta osoitteesta message.setFrom (uusi InternetAddress (from)); message.addRecipient (Message.RecipientType.TO, uusi InternetAddress (kohteeseen)); // Aseta aihesanoma.setSubject (aihe); message.setText (body); BodyPart objMessageBodyPart = uusi MimeBodyPart (); objMessageBodyPart.setText ("Etsi liitetty raporttitiedosto!"); Moniosainen moniosainen = uusi MimeMultipart (); multipart.addBodyPart (objMessageBodyPart); objMessageBodyPart = uusi MimeBodyPart (); // Aseta polku pdf-raporttitiedostoon String filename = System.getProperty ("user.dir") + "\\ Default test.pdf"; // Luo tietolähde tiedoston liittämiseksi postiin DataSource source = new FileDataSource (tiedostonimi); objMessageBodyPart.setDataHandler (uusi DataHandler (lähde)); objMessageBodyPart.setFileName (tiedostonimi); multipart.addBodyPart (objMessageBodyPart); viesti.setContent (moniosainen); Liikenteen kuljetus = session.getTransport ("smtp"); liikenne. yhdistä (isäntä, mistä, siirrä); transport.sendMessage (viesti, viesti.getAllRecipients ()); kuljetus.sulje (); } catch (AddressException ae) {ae.printStackTrace (); } catch (MessagingException me) {me.printStackTrace (); }}}

Lataa koko projekti täältä

Huomaa: Kun napsautamme näyttökuvan linkkiä pdf-muodossa, se näyttää suojausikkunan. Meidän on annettava tämän valintaikkunan avata pdf.

Näin luotu sähköposti näyttää tältä

Yhteenveto:

  • TestNG: llä on sisäänrakennettu raportointikyky.
  • Testitapausten suorittamisen jälkeen TestNG luo testitulostekansion projektin juuressa.
  • Test-output-kansiossa on kaksi pääraporttia, index.html ja emailable-report.html.
  • TestNG-raportin mukauttamiseksi meidän on otettava käyttöön kaksi rajapintaa, ITestListener ja IReporter.
  • Jos meidän on saatava raportti suorituksen väliin, tarvitsemme ITestListenerin.
  • Loppuraportin luomiseksi suorituksen jälkeen meidän on toteutettava IReporter.
  • Kun otat kuvakaappauksen, Selenium WebDriverissa meidän on kirjoitettava Cast WebDriver TakesScreenShot-käyttöliittymään.
  • Jotta voimme luoda pdf-raportteja, meidän on lisättävä IText jar projektiin.

Lataa Selenium-projektitiedostot esittelyyn tästä opetusohjelmasta