अनुकूलित करें, पीडीएफ & सेलेनियम वेबड्राइवर में ईमेल टेस्टएनजी रिपोर्ट

विषय - सूची:

Anonim

इससे पहले कि हम कुछ और देखें, पहले समझें -

हमें रिपोर्टिंग की आवश्यकता क्यों है?

जब हम सेलेनियम या किसी अन्य स्वचालन उपकरण का उपयोग कर रहे हैं, तो हम वेब एप्लिकेशन पर ऑपरेशन कर रहे हैं। लेकिन ऑटोमेशन का हमारा उद्देश्य सिर्फ एप्लीकेशन अंडर टेस्ट का अभ्यास करना नहीं है। हम, स्वचालन परीक्षक के रूप में आवेदन का परीक्षण करने वाले हैं, बग ढूंढते हैं और इसे विकास दल या उच्च प्रबंधन को रिपोर्ट करते हैं। यहां सॉफ्टवेयर टेस्टिंग प्रक्रिया के लिए रिपोर्टिंग को महत्व मिलता है

TestNG रिपोर्टिंग

TestNG लाइब्रेरी एक बहुत ही आसान रिपोर्टिंग सुविधा प्रदान करती है। निष्पादन के बाद, Testng परियोजना के मूल में एक परीक्षण-आउटपुट फ़ोल्डर उत्पन्न करेगा। इस फ़ोल्डर में दो प्रकार की रिपोर्ट हैं-

Index.html: यह वर्तमान निष्पादन की पूरी रिपोर्ट है जिसमें एक त्रुटि, समूह, समय, रिपोर्टर लॉग, XML फ़ाइलों का परीक्षण करने जैसी जानकारी है।

emailable-report.html: यह वर्तमान परीक्षण निष्पादन की सारांशित रिपोर्ट है जिसमें हरे रंग में टेस्ट केस संदेश (पास परीक्षण मामलों के लिए) और लाल (असफल परीक्षण मामलों के लिए) हाइलाइट हैं।

TestNG रिपोर्ट को कैसे अनुकूलित करें

TestNG रिपोर्टिंग काफी आसान है, लेकिन फिर भी, कभी-कभी हमें रिपोर्ट में कुछ कम डेटा की आवश्यकता होती है या कुछ अन्य प्रारूप जैसे पीडीएफ, एक्सेल आदि में रिपोर्ट प्रदर्शित करना चाहते हैं या रिपोर्ट के लेआउट को बदलना चाहते हैं।

ऐसे दो तरीके हो सकते हैं जिन्हें हम TestNG रिपोर्ट को कस्टमाइज़ कर सकते हैं

  • ITestListener इंटरफ़ेस का उपयोग करना:
  • IReporter इंटरफ़ेस का उपयोग करना:

ITestListener इंटरफ़ेस

हम इस इंटरफ़ेस का उपयोग तब करते हैं जब हमें वास्तविक समय रिपोर्ट को अनुकूलित करने की आवश्यकता होती है। दूसरे शब्दों में, यदि हम एक TetNG सूट में परीक्षण मामलों के गुच्छा को निष्पादित कर रहे हैं और हम प्रत्येक परीक्षण मामले की रिपोर्ट प्राप्त करना चाहते हैं, तो प्रत्येक परीक्षण मामले के बाद हमें ITestListener इंटरफ़ेस को लागू करने की आवश्यकता है। यह इंटरफ़ेस चालू परीक्षण मामले की सही स्थिति भेजने के लिए onTestFailure, onTestStart, onTestSkipped विधि को ओवरराइड करेगा।

यहां वे चरण हैं जिनका हम अनुसरण करेंगे

  • RealGuru99Report का कहना है कि एक वर्ग बनाएँ और इसमें iTestListener को लागू करें।
  • ITestListener के तरीकों को लागू करें
  • टेस्ट विधि बनाएँ और टेस्ट मेथड क्लास में श्रोता के रूप में RealGuru99Report क्लास जोड़ें।

कोड उदाहरण

RealGuru99TimeReport.java वास्तविक समय रिपोर्टिंग वर्ग है। यह रिपोर्टिंग के लिए ITestListener इंटरफ़ेस को लागू करेगा

पैकेज testNGReport.realTimeReport;आयात org.testng.ITestContext;आयात org.testng.ITestListener;आयात org.testng.ITestResult;सार्वजनिक वर्ग@ ऑवरराइडसार्वजनिक शून्य onStart (ITestContext arg0) {System.out.println ("निष्पादन की शुरुआत (परीक्षण) ->" + arg0.getName ());}@ ऑवरराइडसार्वजनिक शून्य onTestStart (ITestResult arg0) {System.out.println ("टेस्ट शुरू ->" + arg0.getName ());}@ ऑवरराइडसार्वजनिक शून्य onTestSuccess (ITestResult arg0) {System.out.println ("टेस्ट पास ->" + arg0.getName ());}@ ऑवरराइडसार्वजनिक शून्य onTestFailure (ITestResult arg0) {System.out.println ("Test Fail ->" + arg0.getName ());}@ ऑवरराइडसार्वजनिक शून्य onTestSkipped (ITestResult arg0) {System.out.println ("टेस्ट स्किप्ड ->" + arg0.getName ());}@ ऑवरराइडसार्वजनिक शून्यSystem.out.println ("निष्पादन की समाप्ति (परीक्षण) ->" + arg0.getName ());}@ ऑवरराइडसार्वजनिक शून्य// TODO ऑटो-जनरेट विधि ठूंठ}}

TestGuru99RealReport.java वास्तविक रिपोर्ट का परीक्षण मामला है

पैकेज testNGReport.realTimeReport;आयात org.testng.Assert;आयात org.testng.annotations.Listeners;आयात org.testng.annotations.Test;@Listeners (RealGuru99TimeReport.class)सार्वजनिक वर्ग TestGuru99RealReport {@परीक्षासार्वजनिक शून्य परीक्षणAssert.assertTrue (सच);}@परीक्षासार्वजनिक शून्य परीक्षणAssert.assertTrue (झूठी);}// टेस्ट केस फेल हुए टेस्टकेस पर निर्भर करता है@ टेस्ट (निर्भरऑनमेथोड्स = "परीक्षणरेलपोर्टपोर्ट")सार्वजनिक शून्य परीक्षण}}

आउटपुट जैसा दिखेगा-

IReporter इंटरफ़ेस

यदि हम TestNG द्वारा उत्पन्न अंतिम परीक्षण रिपोर्ट को अनुकूलित करना चाहते हैं, तो हमें IReporter इंटरफ़ेस को लागू करने की आवश्यकता है। इस इंटरफ़ेस में जेनरेटपोर्ट को लागू करने की केवल एक विधि है। इस विधि में सूची में एक पूर्ण परीक्षण निष्पादन की सभी जानकारी है, और हम इसका उपयोग करके रिपोर्ट उत्पन्न कर सकते हैं।

कोड उदाहरण

Guru99Reporter.java रिपोर्ट को अनुकूलित करने के लिए उपयोग की जाने वाली फ़ाइल है

पैकेज परीक्षणआयात java.util.Collection;आयात java.util.Date;आयात java.util.ist;आयात java.util.Map;आयात java.util.Set;आयात org.testng.IReporter;आयात org.testng.IResultMap;आयात org.testng.ISuite;आयात org.testng.ISuiteResult;आयात org.testng.ITestContext;आयात org.testng.ITestNGMethod;आयात org.testng.xml.XmlSuite;सार्वजनिक वर्ग@ ऑवरराइडसार्वजनिक शून्य जेनरेट करेंपोर्ट (सूची  arg0, सूची  arg1,स्ट्रिंग आउटपुटडायरेक्टरी) {// इस विधि के दूसरे पैरामीटर ISuite में सभी सूट निष्पादित होंगे।के लिए (ISuite iSuite: arg1) {// एक समय में एकल सूट के परिणाम का एक नक्शा प्राप्त करेंनक्शा <स्ट्रिंग, ISuiteResult> परिणाम = iSuite.getResults ();// परिणाम मानचित्र की कुंजी प्राप्त करेंसेट करें  कुंजियाँ = results.keySet ();// प्रत्येक मानचित्र मूल्य पर एक-एक करके जाएंके लिए (स्ट्रिंग कुंजी: कुंजी) {// वर्तमान परिणाम का संदर्भ वस्तुITestContext संदर्भ = results.get (कुंजी) .getTestContext ();// कंसोल में प्रिंट सूट विस्तारSystem.out.println ("सूट नाम ->" + संदर्भ.getName ()रिपोर्ट+ ":: सूट का नाम ->" + संदर्भ.getSuite ()। GetName ()+ ":: निष्पादन के लिए प्रारंभ समय ->" + संदर्भ.getStartDate ()+ ":: निष्पादन के लिए अंतिम तिथि समय ->" + संदर्भ.getEndDate ());// केवल असफल परीक्षण मामलों के लिए मानचित्र प्राप्त करेंIResultMap resultMap = reference.getFailedTests ();// असफल परीक्षण मामलों की विधि का विवरण प्राप्त करेंसंग्रह  failMethods = resultMap.getAllMethods ();// सभी विफल तरीकों में एक-एक करके लूप करेंSystem.out.println ("-------- विफल परीक्षण मामले ---------");के लिए (ITestNGMethod iTestNGMethod: विफल मेथोड) {// प्रिंट असफल परीक्षण मामलों का विवरणSystem.out.println ("TESTCASE NAME ->" + iTestNGMethod.getMethodName ()+ "\ n विवरण ->" iTestNGMethod.getDescription ()+ "\ n श्रेष्ठता ->" + iTestNGMethod.getPriority ()+ "\ n: दिनांक ->" + नई तिथि (iTestNGMethod.getDate ()));}}}}}

TestGuru99ForReporter.java कस्टम रिपोर्टिंग के लिए एक डेमो है

पैकेज परीक्षणआयात org.testng.Assert;आयात org.testng.annotations.Listeners;आयात org.testng.annotations.Test;// श्रोता को रिपोर्ट सुनने के लिए जोड़ें और टेस्टकस समाप्त होने पर इसे लिखें@ लिस्टर्स (मान = गुरु99 रिपेयर.क्लास)सार्वजनिक वर्ग@ टेस्ट (प्राथमिकता = 0, विवरण = "testReporterOne")सार्वजनिक शून्य परीक्षणरचनाकर्ता () {// पास टेस्ट केसAssert.assertTrue (सच);}@ टेस्ट (प्राथमिकता = 1, विवरण = "testReporterTwo")सार्वजनिक शून्य परीक्षण// असफल परीक्षण मामलाAssert.assertTrue (झूठी);}}

आउटपुट इस तरह होगा-

रिपोर्ट का पीडीएफ और ईमेल

उपरोक्त रिपोर्ट का कार्यान्वयन रिपोर्ट अनुकूलन के साथ आरंभ करने के लिए काफी सरल और स्पष्ट है।

लेकिन कॉर्पोरेट वातावरण में, आपको अत्यधिक अनुकूलित रिपोर्ट बनाने की आवश्यकता होगी। यहां वह परिदृश्य है जिससे हम निपटेंगे

  1. पीडीएफ फॉर्म में कस्टम रिपोर्ट बनाएं
  2. स्क्रीनशॉट को त्रुटियों पर ही लें। पीडीएफ में स्क्रीनशॉट के लिए लिंक
  3. पीडीएफ का ईमेल भेजें

पीडीएफ रिपोर्ट इस तरह दिखती है

Pdf रिपोर्ट बनाने के लिए हमें एक जावा एपीआई IText की आवश्यकता है । यहाँ पर डाउनलोड करो । एक अन्य कस्टम श्रोता वर्ग है जो वास्तव में इस IText जार को लागू कर रहा है और हमारे लिए एक पीडीएफ रिपोर्ट बना रहा है। यहाँ पर डाउनलोड करो

उपरोक्त आंकड़ा पीडीएफ रिपोर्ट के डिफ़ॉल्ट प्रारूप को दिखाता है। आप इसे कस्टमाइज़ कर सकते हैं

यहां बताया गया है कि हम इसे कैसे देखेंगे

चरण 1) एक बेस क्लास बनाएं

चरण 2) JipersionListerner.Java (पीडीएफ निर्माण कोड) को अनुकूलित करें

चरण 3) एक TestGuru99PDFEmail.java बनाएँ जो परीक्षण मामलों को निष्पादित करेगा, पीडीएफ बनाएँ

चरण 4) ईमेल के माध्यम से पीडीएफ रिपोर्ट भेजने के लिए TestGuru99PDFEmail.java पर कोड जोड़ें

आइए इन चरणों पर गौर करें

चरण 1) बेस क्लास बनाएं

इस बेस क्लास में वेबड्राइवर और टेक स्क्रीनशॉट बनाने के फंक्शन हैं

पैकेज PDFEmail;आयात java.io.File;आयात org.apache.commons.io.FileUtils;आयात org.openqa.selenium.OutputType;आयात org.openqa.selenium.TakesScreenshot;आयात org.openqa.selenium.WebDriver;आयात org.openqa.selenium.firefox.FirefoxDriver;सार्वजनिक वर्गस्थिर वेबड्राइवर चालक;सार्वजनिक स्थैतिक वेबड्राइवर getDriver () {अगर (ड्राइवर == नल) {WebDriver ड्राइवर;System.setProperty ("webdriver.gecko.driver", "C: \\ geckodriver.exe");ड्राइवर = नया फ़ायरफ़ॉक्सड्राइवर ();}वापसी चालक;}/ *** यह फ़ंक्शन स्क्रीनशॉट लेगा* @ अपरम वेबड्राइवर* @ चरण फ़ाइलविथपथ* @ भ्रांतियाँ* /सार्वजनिक स्थैतिक शून्य लेना// वेब ड्राइवर ऑब्जेक्ट को टेकसर्चशॉट में कनवर्ट करेंTakesSreenshot scrShot = ((TakesScreenshot) webdriver);// कॉल getScreenshotAs छवि फ़ाइल बनाने के लिए विधिफ़ाइल SrcFile = scrShot.getScreenshotAs (OutputType.FILE);// छवि फ़ाइल को नए गंतव्य पर ले जाएंफ़ाइल गंतव्य = नई फ़ाइल (फ़ाइलविथपथ);// गंतव्य पर कॉपी फ़ाइलFileUtils.copyFile (SrcFile, DestFile);}}

चरण 2) JipersionListener.java को अनुकूलित करें

हम डिफ़ॉल्ट रिपोर्ट प्रारूप के साथ चिपके रहेंगे। लेकिन हम 2 अनुकूलन करेंगे

  • त्रुटि पर स्क्रीनशॉट लेने के लिए JypersionListener को निर्देश देने के लिए कोड जोड़ना
  • स्क्रीनशॉट के लिंक को पीडीएफ रिपोर्ट में लेना

पीडीएफ रिपोर्ट में स्क्रीनशॉट संलग्न करने के लिए कोड जोड़ें

चरण 3) एक TestGuru99PDFEmail.java बनाएँ जो परीक्षण मामलों को निष्पादित करेगा, पीडीएफ बनाएँ

  • यहाँ हम श्रोता के रूप में JyperionListener.class जोड़ेंगे
  • हम 3 परीक्षण मामलों को निष्पादित करेंगे।
  • Assert.assertTrue का उपयोग करते हुए हम सिर्फ एक पास करते समय 2 परीक्षण मामलों को विफल कर देंगे।
  • हमारे कस्टमाइज़ेशन के अनुसार ही फेल हुए टेस्ट मामलों के लिए स्क्रीनशॉट लिया जाएगा
पैकेज PDFEmail;आयात java.util.Properties;आयात javax.activation.DataHandler;आयात javax.activation.DataSource;आयात javax.activation.FileDataSource;आयात javax.mail.BodyPart;आयात javax.mail.essage;आयात javax.mail.essagingException;आयात javax.mail.ultipart;आयात javax.mail.Session;आयात javax.mail.ransport;आयात javax.mail.internet.AddressException;आयात javax.mail.internet.InternetAddress;आयात javax.mail.internet.MimeBodyPart;आयात javax.mail.internet.MimeMessage;आयात javax.mail.internet.MimeMultipart;आयात org.openqa.selenium.WebDriver;आयात org.testng.Assert;आयात org.testng.annotations.AfterSuite;आयात org.testng.annotations.Listeners;आयात org.testng.annotations.Test;आयात रिपोर्टर।// पीडीएफ रिपोर्ट पीढ़ी के लिए श्रोता जोड़ें@ लिस्ट्रेनसार्वजनिक वर्ग TestGuru99PDFReport BaseClass का विस्तार करता है {WebDriver ड्राइवर;// टेस्टकेस विफल रहा इसलिए स्क्रीन शॉट जेनरेट हुआ@परीक्षासार्वजनिक शून्य परीक्षणड्राइवर = BaseClass.getDriver ();Driver.get ("http://google.com");Assert.assertTrue (झूठी);}// टेस्टकेस विफल रहा इसलिए स्क्रीन शॉट जेनरेट हुआ@परीक्षासार्वजनिक शून्य परीक्षणड्राइवर = BaseClass.getDriver ();Driver.get ("http: /guru99.com");Assert.assertTrue (झूठी);}// टेस्ट टेस्ट का मामला पास होगा, इसलिए इस पर कोई स्क्रीन शॉट नहीं लगाया जाएगा@परीक्षासार्वजनिक शून्य परीक्षणड्राइवर = BaseClass.getDriver ();Driver.get ("http://demo.guru99.com");Assert.assertTrue (सच);}

चरण 4) ईमेल के माध्यम से पीडीएफ रिपोर्ट भेजने के लिए TestGuru99PDFEmail.java पर कोड जोड़ें

  • हम पीडीएफ रिपोर्ट भेजने के लिए एनोटेशन @ आफ्टरसाइट का उपयोग करेंगे
  • हम जीमेल का उपयोग करके ईमेल भेजेंगे
  • ईमेल सक्षम करने के लिए, mail.jar, pop3.jar, smptp.jar, आदि जैसे कई पुस्तकालय फ़ाइलों को आयात करने की आवश्यकता है
  • इससे पहले कि आप इसे निष्पादित करें, ईमेल पता और पासवर्ड दर्ज करें
 // पूर्ण निष्पादन के बाद पीडीएफ रिपोर्ट ईमेल द्वारा भेजें@ आफ्टरसाइटसार्वजनिक शून्य अश्रु () {sendPDFReportByGMail (" यह ईमेल पता spambots से संरक्षित किया जा रहा है। आपको इसे देखने के लिए जावास्क्रिप्ट की आवश्यकता है।", "पासवर्ड", "इस ईमेल पते की सुरक्षा स्पैममबोट से की जा रही है। आपको यह देखने के लिए जावास्क्रिप्ट सक्रिय होना चाहिए। "," PDF रिपोर्ट "," ";} / ** * * जावा का उपयोग कर ईमेल भेजें * @ अपरम से * @ अपरम पास * @पारम् से * @परम विषय * @ परम् शरीर * / निजी स्थिर शून्य sendPDFReportByGMail (स्ट्रिंग से, स्ट्रिंग पास, स्ट्रिंग विषय, स्ट्रिंग बॉडी) {गुण props = System.getProperties (); स्ट्रिंग होस्ट = "smpp.gmail.com"; props.put ("mail.smtp) starttls.enable "," true "); props.put (" mail.smtp.host ", host); props.put (" mail.smtp.user ", से); props.put (" mail.smtp.password "; ", पास); props.put (" mail.smtp.port "," 587 "); props.put (" mail.smtp.auth "," true "); सत्र सत्र = सत्र। संदेश = नया माइममेसेज (सत्र);पता संदेश से सेट करें। message.addRecipient (Message.RecipientType.TO, new InternetAddress (to)); // विषय संदेश सेट करें। शुरुआत (विषय); message.setText (शरीर); बॉडीपार्ट objMessageBodyPart = new MimeBodyPart (); objMessageBodyPart.setText ("कृपया संलग्न रिपोर्ट फ़ाइल ढूंढें!"); मल्टीपार्ट मल्टीपार्ट = नया MimeMultipart (); multipart.addBodyPart (objMessageBodyPart); objMessageBodyPart = new MimeBodyPart (); // पीडीएफ रिपोर्ट फ़ाइल का पथ सेट करें स्ट्रिंग फ़ाइल नाम = System.getProperty ("user.dir") + "\\ Default test.pdf"; // फ़ाइल में डेटा अटैच करने के लिए डेटा स्रोत बनाएँ स्रोत = नया FileDataSource (फ़ाइल नाम); objMessageBodyPart.setDataHandler (नया डेटाहैंडलर (स्रोत)); objMessageBodyPart.setFileName (फ़ाइल नाम); multipart.addBodyPart (objMessageBodyPart); संदेश।सेटकंटेंट (मल्टीआर्ट); परिवहन परिवहन = session.getTransport ("smtp"); transport.connect (मेजबान, से, पास); transport.sendMessage (संदेश, message.getAllRecipients ()); transport.close (); } catch (AddressException ae) {ae.printStackTrace (); } पकड़ (मुझे संदेश भेजना) {me.printStackTrace (); }}}

यहां पूरा प्रोजेक्ट डाउनलोड करें

नोट: जब हम पीडीएफ में स्क्रीन शॉट लिंक पर क्लिक करते हैं, तो यह सुरक्षा संवाद दिखाता है। हमें इस डायलॉग को पीडीएफ खोलने की अनुमति देनी होगी।

इससे उत्पन्न ईमेल इस तरह दिखाई देगा

सारांश:

  • TestNG में एक इनबिल्ट रिपोर्टिंग क्षमता है।
  • परीक्षण मामलों के पूर्ण निष्पादन के बाद, TestNG परियोजना की जड़ में एक परीक्षण-आउटपुट फ़ोल्डर उत्पन्न करता है।
  • परीक्षण-आउटपुट फ़ोल्डर में, दो मुख्य रिपोर्ट हैं, index.html, और emailable-report.html।
  • TestNG रिपोर्ट को अनुकूलित करने के लिए हमें दो इंटरफेस, ITestListener और IReporter को लागू करना होगा।
  • यदि हमें निष्पादन के बीच एक रिपोर्ट प्राप्त करने की आवश्यकता है, तो हमें ITestListener की आवश्यकता है।
  • पूर्ण निष्पादन के बाद एक अंतिम रिपोर्ट बनाने के लिए, हमें IReporter को लागू करने की आवश्यकता है।
  • स्क्रीनशॉट लेते हुए, सेलेनियम वेबड्राइवर में, हमें WebDriver को TakesScreenShot इंटरफ़ेस पर टाइप करना होगा।
  • Pdf रिपोर्ट जनरेट करने के लिए हमें प्रोजेक्ट में IText जार जोड़ना होगा।

इस ट्यूटोरियल में सेलेनियम प्रोजेक्ट फाइल्स को डेमो के लिए डाउनलोड करें