Pielāgot, PDF un amp; Nosūtīt TestNG ziņojumus pa e-pastu selēna WebDriver

Satura rādītājs:

Anonim

Pirms izpētīsim jebko citu, vispirms sapratīsim -

Kāpēc mums jāziņo?

Kad mēs izmantojam Selenium vai jebkuru citu automatizācijas rīku, mēs veicam darbības tīmekļa lietojumprogrammā. Bet mūsu automatizācijas mērķis nav tikai pārbaudāmās lietojumprogrammas izmantošana. Mums kā automatizācijas testētājam ir paredzēts pārbaudīt lietojumprogrammu, atrast kļūdas un ziņot par to izstrādes komandai vai augstākai vadībai. Šeit ziņošana kļūst svarīga programmatūras testēšanas procesā

TestNG ziņošana

TestNG bibliotēka nodrošina ļoti ērtu ziņošanas funkciju. Pēc izpildes Testng ģenerēs testa izejas mapi projekta saknē. Šajā mapē ir divu veidu atskaites -

Index.html: Šis ir pilnīgs pašreizējās izpildes pārskats, kas satur tādu informāciju kā kļūda, grupas, laiks, reportiera žurnāli, XML testēšanas faili.

emailable-report.html: Šis ir pašreizējās testa izpildes kopsavilkuma pārskats, kurā testa gadījuma ziņojums ir zaļā krāsā (nokārtotiem testa gadījumiem) un sarkanā krāsā (neizdevušos testa gadījumos).

Kā pielāgot TestNG atskaiti

TestNG ziņošana ir diezgan ērta, bet tomēr dažreiz mums pārskatos ir nepieciešams nedaudz mazāk datu vai mēs vēlamies attēlot pārskatus kādā citā formātā, piemēram, pdf, Excel utt., Vai arī mēs vēlamies mainīt pārskata izkārtojumu.

TestNG ziņojumu var pielāgot divējādi

  • ITestListener interfeisa izmantošana:
  • Izmantojot IReporter interfeisu:

ITestListener saskarne

Mēs izmantojam šo saskarni, kad mums jāpielāgo reāllaika pārskats. Citiem vārdiem sakot, ja mēs TetNG komplektā izpildām virkni testa gadījumu un mēs vēlamies iegūt katra testa gadījuma ziņojumu, tad pēc katra testa gadījuma mums jāievieš ITestListener saskarne. Šī saskarne ignorēs metodi onTestFailure, onTestStart, onTestSkipped, lai nosūtītu pareizu pašreizējā testa gadījuma statusu.

Šeit ir soļi, kurus mēs sekosim

  • Izveidojiet klases teikumu RealGuru99Report un ieviesiet tajā iTestListener.
  • Ieviesiet iTestListener metodes
  • Izveidojiet testa metodi un pievienojiet RealGuru99Report klasi kā klausītāju Test Method klasē.

Kodu piemērs

RealGuru99TimeReport.java ir reālā laika pārskatu klase. Tas ieviesīs ITestListener saskarni ziņošanai

pakete testNGReport.realTimeReport;importēt org.testng.ITestContext;importēt org.testng.ITestListener;importēt org.testng.ITestResult;publiskā klase RealGuru99TimeReport ievieš ITestListener {@ Pārvarētpublic void onStart (ITestContext arg0) {System.out.println ("Izpildes sākums (TEST) ->" + arg0.getName ());}@ Pārvarētpublic void onTestStart (ITestResult arg0) {System.out.println ("Pārbaude sākta ->" + arg0.getName ());}@ Pārvarētpublic void onTestSuccess (ITestResult arg0) {System.out.println ("Test Pass ->" + arg0.getName ());}@ Pārvarētpublic void onTestFailure (ITestResult arg0) {System.out.println ("Pārbaude neizdevās ->" + arg0.getName ());}@ Pārvarētpublic void onTestSkipped (ITestResult arg0) {System.out.println ("Izlaista pārbaude ->" + arg0.getName ());}@ Pārvarētpublic void onFinish (ITestContext arg0) {System.out.println ("Izpildes beigas (TEST) ->" + arg0.getName ());}@ Pārvarētpublic void onTestFailedButWithinSuccessPercentage (ITestResult arg0) {// TODO Automātiski ģenerētās metodes spraudnis}}

TestGuru99RealReport.java ir reāla ziņojuma testa gadījums

pakete testNGReport.realTimeReport;importēt org.testng.Assert;importēt org.testng.annotations.Klausītāji;importēt org.testng.annotations.Test;@Listeners (RealGuru99TimeReport.class)publiskā klase TestGuru99RealReport {@Pārbaudepublic void testRealReportOne () {Assert.assertTrue (patiess);}@Pārbaudepublic void testRealReportTwo () {Assert.assertTrue (nepatiesa);}// Pārbaudes gadījums ir atkarīgs no neizdevušās testcase = testRealReportTwo@Test (atkarīgsOnMethods = "testRealReportTwo")public void testRealReportThree () {}}

Rezultāts izskatīsies

IReportera saskarne

Ja mēs vēlamies pielāgot TestNG ģenerēto galīgo testa ziņojumu, mums jāievieš IReporter saskarne. Šai saskarnei ir tikai viena metode, kā ieviest generatorReport. Šai metodei ir visa informācija par pilnīgu testa izpildi sarakstā , un mēs to varam ģenerēt, izmantojot to.

Kodu piemērs

Guru99Reporter.java ir fails, ko izmanto, lai pielāgotu pārskatu

pakete testNGReport.iReporterReport;importēt java.util.Collection;importēt java.util.Date;importēt java.util.List;importēt java.util.Map;importēt java.util.Set;importēt org.testng.IReporter;importēt org.testng.IResultMap;importēt org.testng.ISuite;importēt org.testng.ISuiteResult;importēt org.testng.ITestContext;importēt org.testng.ITestNGMethod;importēt org.testng.xml.XmlSuite;publiskā klase Guru99Reporter ievieš IReporter {@ Pārvarētpublic void generatorReport (saraksts  arg0, saraksts  arg1,String outputDirectory) {// Šīs metodes otrais parametrs ISuite satur visu izpildīto komplektu.par (ISuite iSuite: arg1) {// Iegūt viena komplekta rezultātu karti vienlaikusKarte  results = iSuite.getResults ();// Iegūstiet rezultātu kartes atslēguIestatiet taustiņus  = results.keySet ();// Pāriet uz katru kartes vērtību pa vienampar (String key: keys) {// Pašreizējā rezultāta konteksta objektsITestContext context = results.get (key) .getTestContext ();// Print Suite informācija konsolēSystem.out.println ("Suite nosaukums ->" + context.getName ()+ ":: Pārskata izvades katalogs ->" + context.getOutputDirectory ()+ ":: Suite nosaukums ->" + context.getSuite (). GetName ()+ ":: Sākuma datums izpildes laiks ->" + context.getStartDate ()+ ":: Beigu datums izpildes laiks ->" + context.getEndDate ());// Get Map tikai neveiksmīgiem testa gadījumiemIResultMap resultMap = context.getFailedTests ();// Iegūt detalizētu informāciju par neizdevušos testa gadījumiemKolekcija  failMethods = resultMap.getAllMethods ();// Loop pa vienam visās neveiksmīgajās metodēsSystem.out.println ("-------- Neveiksmīga testa lieta ---------");par (ITestNGMethod iTestNGMethod: FailMethods) {// Detalizēta informācija par neizdevušos testa gadījumiemSystem.out.println ("TESTCASE NAME ->" + iTestNGMethod.getMethodName ()+ "\ nDescription ->" + iTestNGMethod.getDescription ()+ "\ nPriority ->" + iTestNGMethod.getPriority ()+ "\ n: Datums ->" + jauns datums (iTestNGMethod.getDate ()));}}}}}

TestGuru99ForReporter.java ir pielāgotu pārskatu demonstrācija

pakete testNGReport.iReporterReport;importēt org.testng.Assert;importēt org.testng.annotations.Klausītāji;importēt org.testng.annotations.Test;// Pievienojiet klausītāju klausīšanās ziņojumam un uzrakstiet to, kad testi ir pabeigti@Klausītāji (vērtība = Guru99Reporter.class)publiskā klase TestGuru99ForReporter {@Test (prioritāte = 0, apraksts = "testReporterOne")public void testReporterOne () {// Iziet testa gadījumuAssert.assertTrue (patiess);}@Test (prioritāte = 1, apraksts = "testReporterTwo")public void testReporterTwo () {// Neveiksmes testa gadījumsAssert.assertTrue (nepatiesa);}}

Rezultāts būs līdzīgs

Pārskatu PDF un e-pasts

Iepriekš aprakstītā pārskata ieviešana ir diezgan vienkārša un skaidra, lai sāktu darbu ar pārskatu pielāgošanu.

Bet korporatīvajā vidē jums būs jāizveido ļoti pielāgoti pārskati. Šis ir scenārijs, ar kuru mēs nodarbosimies

  1. Izveidot pielāgotu pārskatu PDF formā
  2. Veikt ekrānuzņēmumus TIKAI kļūdām. Saite uz ekrānuzņēmumiem PDF formātā
  3. Sūtīt PDF e-pastu

PDF pārskats izskatās šādi

Lai izveidotu pdf ziņojumu, mums ir nepieciešams Java API IText . Lejupielādējiet to šeit. Ir vēl viena pielāgotu klausītāju klase, kas faktiski ievieš šo IText burku un izveido mums pdf ziņojumu. Lejupielādējiet to šeit

Iepriekš attēlā parādīts ģenerētā PDF pārskata noklusējuma formāts. To var pielāgot

Lūk, kā mēs tam tuvosimies

1. solis) Izveidojiet bāzes klasi

2. darbība. Pielāgojiet JypersionListerner.Java (PDF izveides kods)

3. solis) Izveidojiet TestGuru99PDFEmail.java, kas izpildīs testa gadījumus, izveidojiet PDF

4. solis. Pievienojiet kodu TestGuru99PDFEmail.java, lai nosūtītu PDF ziņojumu pa e-pastu

Apskatīsim šīs darbības

1. solis) Izveidojiet bāzes klasi

Šai bāzes klasei ir funkcijas, lai izveidotu WebDriver un Veikt ekrānuzņēmumu

pakete PDFEmail;importēt java.io.File;importēt org.apache.commons.io.FileUtils;importēt org.openqa.selenium.OutputType;importēt org.openqa.selenium.TakesScreenshot;importēt org.openqa.selenium.WebDriver;importēt org.openqa.selenium.firefox.FirefoxDriver;publiskā klase BaseClass {statisks WebDriver draiveris;publiskais statiskais WebDriver getDriver () {ja (draiveris == null) {WebDriver draiveris;System.setProperty ("webdriver.gecko.driver", "C: \\ geckodriver.exe");draiveris = jauns FirefoxDriver ();}atgriešanās vadītājs;}/ *** Šī funkcija uzņems ekrānuzņēmumu* @param tīmekļa draiveris* @param fileWithPath* @ throws izņēmums* /public static void takeSnapShot (WebDriver tīmekļa draiveris, String fileWithPath) izmet izņēmumu {// Web draivera objekta konvertēšana uz TakeScreenshotTakesScreenshot scrShot = ((TakesScreenshot) tīmekļa draiveris);// Zvana getScreenshotAs metode attēla faila izveideiFails SrcFile = scrShot.getScreenshotAs (OutputType.FILE);// Pārvietot attēla failu uz jaunu galamērķiFile DestFile = jauns fails (fileWithPath);// Kopēt failu galamērķīFileUtils.copyFile (SrcFile, DestFile);}}

2. solis. Pielāgojiet JypersionListener.java

Mēs ievērosim noklusējuma pārskata formātu. Bet mēs veiksim 2 pielāgojumus

  • Pievienojot kodu, lai norādītu JypersionListener veikt ekrānuzņēmumu vietnē Kļūda
  • Pievienojot saiti uz ekrānuzņēmuma uzņemšanas PDF pārskatā

Pievienojiet kodu, lai pievienotu ekrānuzņēmumu PDF pārskatam

3. solis) Izveidojiet TestGuru99PDFEmail.java, kas izpildīs testa gadījumus, izveidojiet PDF

  • Šeit mēs pievienosim JyperionListener.class kā klausītāju
  • Mēs izpildīsim 3 testa gadījumus.
  • Izmantojot Assert.assertTrue, mums neizdosies 2 testa gadījumi, vienlaikus nokārtojot tikai vienu.
  • Neveiksmīgu pārbaudes gadījumu ekrānuzņēmums tiks uzņemts tikai atbilstoši mūsu pielāgojumiem
pakete PDFEmail;importēt java.util.Īpašības;importēt javax.activation.DataHandler;importēt javax.activation.DataSource;importēt javax.activation.FileDataSource;importēt javax.mail.BodyPart;importēt javax.mail.Message;importēt javax.mail.MessagingException;importēt javax.mail.Multipart;importēt javax.mail.Session;importēt javax.mail.Transport;importēt javax.mail.internet.AddressException;importēt javax.mail.internet.InternetAddress;importēt javax.mail.internet.MimeBodyPart;importēt javax.mail.internet.MimeMessage;importēt javax.mail.internet.MimeMultipart;importēt org.openqa.selenium.WebDriver;importēt org.testng.Assert;importēt org.testng.annotations.AfterSuite;importēt org.testng.annotations.Klausītāji;importēt org.testng.annotations.Test;importa reportieris.JyperionListener;// Pievienojiet klausītāju pdf ziņojumu ģenerēšanai@Klausītāji (JyperionListener.class)publiskā klase TestGuru99PDFReport paplašina BaseClass {WebDriver draiveris;// Testcase neizdevās, tāpēc tika ģenerēts ekrāna attēls@Pārbaudepublic void testPDFReportOne () {draiveris = BaseClass.getDriver ();driver.get ("http://google.com");Assert.assertTrue (nepatiesa);}// Testcase neizdevās, tāpēc tika ģenerēts ekrāna attēls@Pārbaudepublic void testPDFReporTwo () {draiveris = BaseClass.getDriver ();draiveris.get ("http: /guru99.com");Assert.assertTrue (nepatiesa);}// Pārbaudes testa gadījums būs izturēts, tāpēc tajā netiks uzņemts ekrāns@Pārbaudepublic void testPDFReportThree () {draiveris = BaseClass.getDriver ();driver.get ("http://demo.guru99.com");Assert.assertTrue (patiess);}

4. solis. Pievienojiet kodu TestGuru99PDFEmail.java, lai nosūtītu PDF ziņojumu pa e-pastu

  • Mēs izmantosim anotāciju @AfterSuite, lai nosūtītu PDF pārskata e-pastu
  • Mēs sūtīsim e-pastu, izmantojot Gmail
  • Lai iespējotu e-pastu, jāimportē daudzi bibliotēkas faili, piemēram, mail.jar, pop3.jar, smptp.jar utt.
  • Pirms to izpildāt, ievadiet no, uz e-pasta adresi un paroli
 // Pēc pilnīgas izpildes nosūtiet pdf ziņojumu pa e-pastu@AfterSuitepublic void tearDown () {sendPDFReportByGMail (" Šī e-pasta adrese ir aizsargāta pret mēstuļošanu (spam), Jūsu pārlūkam ir jābūt aktivizētam Javascript, lai to aplūkotu.", "parole", "This email address is being protected from spambots. You need JavaScript enabled to view it.", "PDF Report", ""); } /** * Send email using java * @param from * @param pass * @param to * @param subject * @param body */ private static 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", host); props.put("mail.smtp.user", from); props.put("mail.smtp.password", pass); props.put("mail.smtp.port", "587"); props.put("mail.smtp.auth", "true"); Session session = Session.getDefaultInstance(props); MimeMessage message = new MimeMessage(session); try { //Set from address message.setFrom(new InternetAddress(from)); message.addRecipient(Message.RecipientType.TO, new InternetAddress(to)); //Set subject message.setSubject(subject); message.setText(body); BodyPart objMessageBodyPart = new MimeBodyPart(); objMessageBodyPart.setText("Please Find The Attached Report File!"); Multipart multipart = new MimeMultipart(); multipart.addBodyPart(objMessageBodyPart); objMessageBodyPart = new MimeBodyPart(); //Set path to the pdf report file String filename = System.getProperty("user.dir")+"\\Default test.pdf"; //Create data source to attach the file in mail DataSource source = new FileDataSource(filename); objMessageBodyPart.setDataHandler(new DataHandler(source)); objMessageBodyPart.setFileName(filename); multipart.addBodyPart(objMessageBodyPart); message.setContent(multipart); Transport transport = session.getTransport("smtp"); transport.connect(host, from, pass); transport.sendMessage(message, message.getAllRecipients()); transport.close(); } catch (AddressException ae) { ae.printStackTrace(); } catch (MessagingException me) { me.printStackTrace(); } } }

Lejupielādējiet visu projektu šeit

Piezīme: Kad mēs noklikšķinām uz ekrāna saites saites pdf formātā, tas parāda drošības dialoglodziņu. Mums ir jāļauj šim dialoglodziņam atvērt pdf.

Šādi ģenerētais e-pasts izskatīsies šādi

Kopsavilkums:

  • TestNG tajā ir iebūvēta ziņošanas spēja.
  • Pēc testa gadījumu pilnīgas izpildes TestNG ģenerē testa saknes mapi projekta saknē.
  • Testa izvades mapē ir divi galvenie pārskati: index.html un e-pastu-report.html.
  • Lai pielāgotu TestNG ziņojumu, mums jāievieš divas saskarnes - ITestListener un IReporter.
  • Ja starp izpildi mums jāsaņem pārskats, mums ir nepieciešams ITestListener.
  • Lai izveidotu galīgo ziņojumu pēc pilnīgas izpildes, mums jāievieš IReporter.
  • Izmantojot Selenium WebDriver ekrānuzņēmumu, mums ir jāievada cast WebDriver TakesScreenShot saskarnē.
  • Lai ģenerētu pdf pārskatus, mums projektā jāpievieno IText jar.

Šajā apmācībā lejupielādējiet Selenium projekta failus demonstrācijai