Kohanda, PDF & Saatke TestNG aruanded e-postiga seleeni veebidraiveris

Lang L: none (table-of-contents):

Anonim

Enne kui uurime midagi muud, mõistame kõigepealt -

Miks me vajame aruandlust?

Kui kasutame Seleeni või mõnda muud automatiseerimisvahendit, teostame toiminguid veebirakenduses. Kuid meie automatiseerimise eesmärk pole ainult testitava rakenduse kasutamine. Meie kui automaatikatestija peaksime rakendust testima, vigadest üles leidma ja sellest arendustiimile või kõrgemale juhtkonnale teatama. Siin saab aruandlus tarkvara testimise protsessi jaoks tähtsust

TestNG aruandlus

TestNG raamatukogu pakub väga mugavat aruandlusfunktsiooni. Pärast käivitamist genereerib Testng projekti juurest test-output kausta. See kaust sisaldab kahte tüüpi aruandeid-

Index.html: See on praeguse täitmise täielik aruanne, mis sisaldab teavet nagu viga, rühmad, aeg, reporterilogid, testng XML-failid.

emailable-report.html: See on praeguse testi täitmise kokkuvõtlik aruanne, mis sisaldab rohelise (läbitud testjuhtumite korral) ja punase (ebaõnnestunud testjuhtumite korral) esiletõstetud testi juhtumi teadet.

TestNG aruande kohandamine

TestNG aruandlus on üsna mugav, kuid siiski vajame mõnikord aruannetes vähem andmeid või soovime aruandeid kuvada mõnes muus vormingus, näiteks pdf, excel jne, või soovime aruande paigutust muuta.

TestNG aruande kohandamiseks võib olla kaks võimalust

  • ITestListeneri liidese kasutamine:
  • IReporteri liidese kasutamine:

ITestListeneri liides

Kasutame seda liidest, kui peame reaalajas aruannet kohandama. Teisisõnu, kui teostame hulga testjuhtumeid TetNG komplektis ja soovime saada aruande iga testjuhtumi kohta, siis peame pärast iga testjuhtumit juurutama liidese ITestListener. See liides alistab praeguse testjuhtumi õige oleku saatmiseks meetodi onTestFailure, onTestStart, onTestSkipped.

Siin on sammud, mida me järgime

  • Looge klass, näiteks RealGuru99Report, ja rakendage selles iTestListener.
  • Rakendage iTestListeneri meetodeid
  • Looge testimeetod ja lisage klass RealGuru99Report kuulajana testimeetodi klassi.

Koodinäide

RealGuru99TimeReport.java on reaalajas aruandlusklass. See rakendab aruandluseks ITestListeneri liidest

pakett testNGReport.realTimeReport;import org.testng.ITestContext;import org.testng.ITestListener;import org.testng.ITestResult;avalik klass RealGuru99TimeReport rakendab ITestListener {@Ülepublic void onStart (ITestContext arg0) {System.out.println ("Käivitamise algus (TEST) ->" + arg0.getName ());}@Ülepublic void onTestStart (ITestResult arg0) {System.out.println ("Test käivitatud ->" + arg0.getName ());}@Ülepublic void onTestSuccess (ITestResult arg0) {System.out.println ("Testipääs ->" + arg0.getName ());}@Ülepublic void onTestFailure (ITestResult arg0) {System.out.println ("Test nurjus ->" + arg0.getName ());}@Ülepublic void onTestSkipped (ITestResult arg0) {System.out.println ("Test vahele jäetud ->" + arg0.getName ());}@Ülepublic void onFinish (ITestContext arg0) {System.out.println ("Täitmise lõpp (TEST) ->" + arg0.getName ());}@Ülepublic void onTestFailedButWithinSuccessPercentage (ITestResult arg0) {// TODO Automaatselt loodud meetodi tüvi}}

TestGuru99RealReport.java on tõelise aruande testjuhtum

pakett testNGReport.realTimeReport;import org.testng.Assert;import org.testng.annotations.Kuulajad;import org.testng.annotations.Test;@Listeners (RealGuru99TimeReport.class)avalik klass TestGuru99RealReport {@Testpublic void testRealReportOne () {Assert.assertTrue (tõene);}@Testpublic void testRealReportTwo () {Assert.assertTrue (vale);}// Testjuhtum sõltub ebaõnnestunud testcase = testRealReportTwo@Test (sõltubOnMethods = "testRealReportTwo")public void testRealReportThree () {}}

Väljund näeb välja nagu

IReporteri liides

Kui soovime kohandada TestNG loodud lõplikku testiaruannet, peame juurutama IReporteri liidese. Sellel liidesel on ainult üks meetod geneetilise aruande juurutamiseks. Sellel meetodil on kogu testi täitmise teave loendis ja selle abil saame aruande genereerida.

Koodinäide

Guru99Reporter.java on fail, mida kasutatakse aruande kohandamiseks

pakett testNGReport.iReporterReport;import java.util.Collection;import java.util.Date;import java.util.List;import java.util.Map;import java.util.Set;import org.testng.IReporter;import org.testng.IResultMap;import org.testng.ISuite;import org.testng.ISuiteResult;import org.testng.ITestContext;import org.testng.ITestNGMethod;import org.testng.xml.XmlSuite;avaliku klassi Guru99Reporter rakendab IReporterit {@Ülepublic void generateReport (Loend  arg0, Loend  arg1,String outputDirectory) {// Selle meetodi teine ​​parameeter ISuite sisaldab kogu käivitatud komplekti.for (ISuite iSuite: arg1) {// Hankige ühe sviidi tulemuste kaart korragaKaart  results = iSuite.getResults ();// Hankige tulemuste kaardi võtiMäärake klahvid  = results.keySet ();// Mine ükshaaval iga kaardi väärtuse juurdefor (String key: keys) {// Praeguse tulemuse kontekstobjektITestContext context = results.get (võti) .getTestContext ();// Print Suite'i detail konsoolisSystem.out.println ("Suite'i nimi ->" + context.getName ()+ ":: Aruande väljundite kataloog ->" + context.getOutputDirectory ()+ ":: Suite'i nimi ->" + context.getSuite (). GetName ()+ ":: käivitamise alguskuupäev ->" + context.getStartDate ()+ ":: Lõppkuupäev täitmise aeg ->" + context.getEndDate ());// Hankige kaart ainult ebaõnnestunud testjuhtumite jaoksIResultMap resultMap = context.getFailedTests ();// Ebaõnnestunud testjuhtumite meetodi üksikasjade hankimineKogumine  nurjusMethods = resultMap.getAllMethods ();// Looge ükshaaval kõik ebaõnnestunud meetodidSystem.out.println ("-------- FAILED TEST CASE ---------");for (ITestNGMethod iTestNGMethod: FailMethods) {// ebaõnnestunud testjuhtumite üksikasjade printimineSystem.out.println ("TESTCASE NIMI ->" + iTestNGMethod.getMethodName ()+ "\ nDescription ->" + iTestNGMethod.getDescription ()+ "\ nPriority ->" + iTestNGMethod.getPriority ()+ "\ n: Kuupäev ->" + uus kuupäev (iTestNGMethod.getDate ()));}}}}}

TestGuru99ForReporter.java on kohandatud aruandluse demo

pakett testNGReport.iReporterReport;import org.testng.Assert;import org.testng.annotations.Kuulajad;import org.testng.annotations.Test;// Lisage kuulaja aruande kuulamiseks ja kirjutage see, kui testcas on valmis@Listeners (väärtus = Guru99Reporter.class)avalik klass TestGuru99ForReporter {@Test (prioriteet = 0, kirjeldus = "testReporterOne")public void testReporterOne () {// Testi juhtumAssert.assertTrue (tõene);}@Test (prioriteet = 1, kirjeldus = "testReporterTwo")public void testReporterTwo () {// Ebaõnnestunud testjuhtumAssert.assertTrue (vale);}}

Väljund on nagu

Aruannete PDF ja e-post

Ülaltoodud aruande rakendamine on aruande kohandamise alustamiseks üsna lihtne ja selge.

Kuid ettevõttekeskkonnas peate looma väga kohandatud aruandeid. Siin on stsenaarium, millega me tegeleme

  1. Loo kohandatud aruanne PDF-vormingus
  2. Tehke ekraanipilte AINULT vigade kohta. Link ekraanipiltidele PDF-is
  3. Saada PDF-i e-post

PDF-aruanne näeb välja selline

Pdf-aruande koostamiseks vajame Java API IText-i . Laadige see alla siit. On veel üks kohandatud kuulajate klass, mis tegelikult rakendab seda IText purki ja loob meile pdf-aruande. Laadige see alla siit

Ülaltoodud joonisel on kujutatud loodud PDF-aruande vaikevorming. Saate seda kohandada

Siin on, kuidas me sellele läheneme

1. samm. Looge baasklass

Samm 2) Kohandage JypersionListerner.Java (PDF-i loomiskood)

Samm 3) Looge TestGuru99PDFEmail.java, mis käivitab testjuhtumid, looge PDF

Samm 4) PDF-aruande saatmiseks e-posti teel lisage kood saidile TestGuru99PDFEmail.java

Vaatame neid samme

Samm 1) Looge baasklass

Sellel baasklassil on funktsioonid WebDriveri ja ekraanipildi loomiseks

pakett PDFEmail;import java.io.File;importige org.apache.commons.io.FileUtils;import org.openqa.selenium.OutputType;import org.openqa.selenium.TakesScreenshot;import org.openqa.selenium.WebDriver;import org.openqa.selenium.firefox.FirefoxDriver;avaliku klassi BaseClass {staatiline WebDriveri draiver;avalik staatiline WebDriver getDriver () {kui (draiver == null) {WebDriveri draiver;System.setProperty ("webdriver.gecko.driver", "C: \\ geckodriver.exe");draiver = uus FirefoxDriver ();}tagasisõitja;}/ *** See funktsioon teeb ekraanipildi* @param veebidraiver* @param failWithPath* @throws Erand* /avalik staatiline void takeSnapShot (WebDriveri veebidraiver, String fileWithPath) viskab erandi {// Teisendage veebidraiveri objekt TakeScreenshotiksTakesScreenshot scrShot = ((TakesScreenshot) veebidraiver);// Helistage getScreenshotAs meetodiks pildifaili loomiseksFail SrcFile = scrShot.getScreenshotAs (OutputType.FILE);// Teisalda pildifail uude sihtkohtaFail DestFile = uus fail (fileWithPath);// Kopeeri fail sihtkohasFileUtils.copyFile (SrcFile, DestFile);}}

2. samm. Kohandage JypersionListener.java

Jätkame vaikearuande vormingut. Kuid me teeme 2 kohandust

  • Koodi lisamine, et anda JypersionListenerile juhis Vea kohta ekraanipilti tegema
  • Ekraanipildi pildi lingi lisamine PDF-aruandesse

Lisage kood, et ekraanipilt PDF-aruandele lisada

Samm 3) Looge TestGuru99PDFEmail.java, mis käivitab testjuhtumid, looge PDF

  • Lisame siia kuulajana JyperionListener.class
  • Teostame 3 testjuhtu.
  • Assert.assertTrue'i kasutamisel ebaõnnestume 2 testjuhtumit, läbides vaid ühe.
  • Ebaõnnestunud testjuhtumite jaoks tehakse ekraanipilt ainult vastavalt meie kohandustele
pakett PDFEmail;import java.util.Kohad;import javax.activation.DataHandler;import javax.activation.DataSource;import javax.activation.FileDataSource;import javax.mail.BodyPart;import javax.mail.Sõnum;import javax.mail.MessagingException;import javax.mail.Multipart;import javax.mail.Session;import javax.mail.Transport;import javax.mail.internet.AddressException;import javax.mail.internet.InternetAddress;import javax.mail.internet.MimeBodyPart;importige javax.mail.internet.MimeMessage;import javax.mail.internet.MimeMultipart;import org.openqa.selenium.WebDriver;import org.testng.Assert;import org.testng.annotations.AfterSuite;import org.testng.annotations.Kuulajad;import org.testng.annotations.Test;impordireporter.JyperionListener;// Lisa kuulaja pdf-i aruande loomiseks@Listeners (JyperionListener.class)avalik klass TestGuru99PDFReport laiendab BaseClass {WebDriveri draiver;// Testcase ebaõnnestus, nii et ekraanipildi genereerimine@Testpublic void testPDFReportOne () {draiver = BaseClass.getDriver ();driver.get ("http://google.com");Assert.assertTrue (vale);}// Testcase ebaõnnestus, nii et ekraanipildi genereerimine@Testpublic void testPDFReporTwo () {draiver = BaseClass.getDriver ();draiver.get ("http: /guru99.com");Assert.assertTrue (vale);}// Testkatse on läbitud, nii et sellel pole ekraanipilti@Testpublic void testPDFReportThree () {draiver = BaseClass.getDriver ();driver.get ("http://demo.guru99.com");Assert.assertTrue (tõene);}

Samm 4) PDF-aruande saatmiseks e-posti teel lisage kood saidile TestGuru99PDFEmail.java

  • PDF-aruande meilisõnumi saatmiseks kasutame märkust @AfterSuite
  • Saadame meilisõnumeid Gmaili abil
  • E-posti aadressi lubamiseks peate importima palju teegifaile, nagu mail.jar, pop3.jar, smptp.jar jne
  • Enne selle käivitamist sisestage e-posti aadress ja parool alates
 // Pärast täitmist saatke pdf-aruanne e-posti teel@AfterSuitepublic void tearDown () {sendPDFReportByGMail (" See e-posti aadress on spämmirobotite eest kaitstud. Selle vaatamiseks peate lubama JavaScripti.", "parool", "See e-posti aadress on spämmirobotite eest kaitstud. Selle vaatamiseks peate lubama JavaScripti. "," PDF-aruanne "," ");} / ** * Saada meil java abil * @param aadressilt * @param pass * @param aadressile * @param subjekt * @param body * / privaatne staatiline void sendPDFReportByGMail (String from, String pass, String to, String subject, String body) {Properties props = System.getProperties (); String host = "smtp.gmail.com"; props.put ("mail.smtp. starttls.enable "," true "); props.put (" mail.smtp.host ", hosti); props.put (" mail.smtp.user ", alates); ", pass); props.put (" mail.smtp.port "," 587 "); props.put (" mail.smtp.auth "," true "); Seansi seanss = Session.getDefaultInstance (rekvisiidid); MimeMessage sõnum = uus MimeMessage (seanss);proovige {// Set from address message.setFrom (uus InternetAddress (from)); message.addRecipient (Message.RecipientType.TO, uus InternetAddress (to)); // Määra teema sõnum.setSubject (subjekt); message.setText (body); BodyPart objMessageBodyPart = uus MimeBodyPart (); objMessageBodyPart.setText ("Palun leidke manustatud aruandefail!"); Mitmeosaline mitmeosaline = uus MimeMultipart (); multipart.addBodyPart (objMessageBodyPart); objMessageBodyPart = uus MimeBodyPart (); // Määra tee pdf-i aruandefailile Stringi failinimi = System.getProperty ("kasutaja.dir") + "\\ Vaikimisi test.pdf"; // Looge andmeallikas faili lisamiseks meilile DataSource source = new FileDataSource (failinimi); objMessageBodyPart.setDataHandler (uus DataHandler (allikas)); objMessageBodyPart.setFileName (failinimi); multipart.addBodyPart (objMessageBodyPart); sõnum.setContent (mitmeosaline); Transporditransport = session.getTransport ("smtp"); transport.ühendus (host, from, pass); transport.sendMessage (sõnum, sõnum.getAllRecipients ()); transport.sule (); } saak (AddressException ae) {ae.printStackTrace (); } catch (MessagingException me) {me.printStackTrace (); }}}

Laadige kogu projekt alla siit

Märkus. Kui klõpsame ekraanipildi lingil pdf-is, kuvatakse see turbedialoog. Peame lubama sellel dialoogil avada pdf-i.

Nii loodud meil näeb välja selline

Kokkuvõte:

  • TestNG-l on sisseehitatud aruandlusvõime.
  • Pärast testjuhtumite täielikku täitmist genereerib TestNG projekti juurse test-output kausta.
  • Test-output kaustas on kaks peamist aruannet index.html ja emailable-report.html.
  • TestNG aruande kohandamiseks peame kasutama kahte liidest, ITestListener ja IReporter.
  • Kui peame täitmise vahel aruande saama, vajame ITestListenerit.
  • Lõpparuande loomiseks pärast täielikku täitmist peame juurutama IReporteri.
  • Ekraanipildi tegemisel peame Selenium WebDriveris tippima WebDriveri liidesesse TakesScreenShot.
  • Pdf-aruannete loomiseks peame projekti lisama IText purgi.

Laadige selles õpetuses alla Seleeni projektifailid demo jaoks