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
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 (Listaarg0, 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
- Luo mukautettu raportti PDF-muodossa
- Ota kuvakaappauksia VAIN virheistä. Linkki kuvakaappauksiin PDF-muodossa
- 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