Mielőtt bármi mást vizsgálnánk, értsük meg először -
Miért van szükségünk jelentésre?
Amikor Seleniumot vagy bármely más automatizálási eszközt használunk, a webalkalmazáson hajtunk végre műveleteket. De az automatizálás célja nem csak a tesztelés alatt álló alkalmazás gyakorlása. Nekünk, automatizálási tesztelőként állítólag tesztelnünk kell az alkalmazást, hibákat kell találnunk és jelentenünk kell a fejlesztői csapatnak vagy a felső vezetésnek. Itt a jelentés jelentőséget kap a szoftver tesztelési folyamat szempontjából
TestNG jelentéskészítés
A TestNG könyvtár nagyon hasznos jelentési funkciót kínál. A végrehajtás után a Testng létrehoz egy teszt-kimeneti mappát a projekt gyökerében. Ez a mappa kétféle jelentést tartalmaz-
Index.html: Ez az aktuális végrehajtás teljes jelentése, amely információkat tartalmaz, például hibát, csoportokat, időt, riporternaplókat, XML-fájlokat tesztel.
emailable-report.html: Ez az aktuális tesztfuttatás összesítő jelentése, amely zöld (a sikeres tesztesetekhez) és a piros (a sikertelen tesztesetekhez) kiemeléssel tartalmazza a Test Case üzenetet.
A TestNG jelentés testreszabása
A TestNG jelentése meglehetősen praktikus, de néha szükségünk van valamilyen kevesebb adatra a jelentésekben, vagy más formátumban szeretnénk megjeleníteni a jelentéseket, például pdf, excel stb., Vagy meg akarjuk változtatni a jelentés elrendezését.
Kétféle módon testreszabhatjuk a TestNG jelentést
- Az ITestListener interfész használata:
- IReporter interfész használata:
ITestListener interfész
Akkor használjuk ezt a felületet, amikor a valós idejű jelentést testre kell szabnunk. Más szóval, ha egy csomó tesztesetet egy TetNG csomagban hajtunk végre, és meg akarjuk szerezni az egyes tesztesetek jelentését, akkor minden teszteset után végre kell hajtanunk az ITestListener felületet. Ez a felület felülírja az onTestFailure, onTestStart, onTestSkipped metódust az aktuális teszteset helyes állapotának elküldéséhez.
Itt vannak azok a lépések, amelyeket követni fogunk
- Hozzon létre egy osztályt, mondjuk a RealGuru99Report alkalmazást, és valósítsa meg benne az iTestListener alkalmazást.
- Végezze el az iTestListener módszereit
- Hozzon létre tesztmódszert, és adjon hozzá RealGuru99Report osztályt hallgatóként a Test Method osztályba.
Kódpélda
A RealGuru99TimeReport.java a valós idejű jelentési osztály. Megvalósítja az ITestListener felületet a jelentésekhez
csomag testNGReport.realTimeReport;import org.testng.ITestContext;import org.testng.ITestListener;import org.testng.ITestResult;nyilvános osztály RealGuru99TimeReport megvalósítja az ITestListener {@ Felülíráspublic void onStart (ITestContext arg0) {System.out.println ("A végrehajtás kezdete (TEST) ->" + arg0.getName ());}@ Felülíráspublic void onTestStart (ITestResult arg0) {System.out.println ("Teszt elindítva ->" + arg0.getName ());}@ Felülíráspublic void onTestSuccess (ITestResult arg0) {System.out.println ("Test Pass ->" + arg0.getName ());}@ Felülíráspublic void onTestFailure (ITestResult arg0) {System.out.println ("Sikertelen teszt ->" + arg0.getName ());}@ Felülíráspublic void onTestSkipped (ITestResult arg0) {System.out.println ("Teszt átugrva ->" + arg0.getName ());}@ Felülíráspublic void onFinish (ITestContext arg0) {System.out.println ("Végrehajtás vége (TESZT) ->" + arg0.getName ());}@ Felülíráspublic void onTestFailedButWithinSuccessPercentage (ITestResult arg0) {// TODO Automatikusan létrehozott módszercsonk}}
A TestGuru99RealReport.java a valódi jelentés tesztesete
csomag testNGReport.realTimeReport;import org.testng.Assert;import org.testng.annotations.Figyelők;import org.testng.annotations.Test;@Listeners (RealGuru99TimeReport.class)public class TestGuru99RealReport {@Tesztpublic void testRealReportOne () {Assert.assertTrue (igaz);}@Tesztpublic void testRealReportTwo () {Assert.assertTrue (hamis);}// A teszteset a sikertelen testcase = testRealReportTwo függvénye@Test (dependOnMethods = "testRealReportTwo")public void testRealReportThree () {}}
A kimenet
IReporter interfész
Ha testreszabni akarjuk a TestNG által generált végleges tesztjelentést, akkor meg kell valósítanunk az IReporter interfészt. Ennek az interfésznek csak egy módja van a geneReport végrehajtására. Ez a módszer tartalmazza a teljes tesztfuttatás összes információját a
Kódpélda
A Guru99Reporter.java a jelentés testreszabásához használt fájl
csomag 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;nyilvános osztály Guru99Reporter valósítja meg IReporter {@ Felülíráspublic void generáljelentés (Listarg0, List arg1,String outputDirectory) {// A módszer második paramétere Az ISuite az összes végrehajtott csomagot tartalmazza.mert (ISuite iSuite: arg1) {// Egyszerre egyetlen lakosztály eredménytérképének lekéréseTérkép eredmények = iSuite.getResults ();// Szerezd meg az eredménytérkép kulcsátÁllítsa be a kulcsokat = results.keySet ();// Ugrás az egyes térképértékekre egyenkénta (String kulcs: kulcsok) {// Az aktuális eredmény Context objektumaITestContext context = results.get (kulcs) .getTestContext ();// Print Suite részletek a konzolbanSystem.out.println ("Csomag neve ->" + context.getName ()+ ":: Kimeneti jelentés jelentése ->" + context.getOutputDirectory ()+ ":: Csomag neve ->" + context.getSuite (). GetName ()+ ":: A végrehajtás kezdő dátuma ->" + context.getStartDate ()+ ":: Befejezés dátuma végrehajtás ideje ->" + context.getEndDate ());// Get Map csak a sikertelen tesztesetekhezIResultMap resultMap = context.getFailedTests ();// A sikertelen tesztesetek módszerének részletes ismertetéseAz gyűjtemény nem sikerültMethods = resultMap.getAllMethods ();// Hurok egyesével az összes sikertelen módszerbenSystem.out.println ("-------- SIKER TESZT ESET ---------");mert (ITestNGMethod iTestNGMethod: FailMethods) {// A sikertelen tesztesetek részleteinek kinyomtatásaSystem.out.println ("TESTCASE Név ->" + iTestNGMethod.getMethodName ()+ "\ nDescription ->" + iTestNGMethod.getDescription ()+ "\ nPriority ->" + iTestNGMethod.getPriority ()+ "\ n: Dátum ->" + új dátum (iTestNGMethod.getDate ()));}}}}}
A TestGuru99ForReporter.java az egyéni jelentések bemutatója
csomag testNGReport.iReporterReport;import org.testng.Assert;import org.testng.annotations.Figyelők;import org.testng.annotations.Test;// Adjon hozzá hallgatót a jelentés meghallgatásához, és írja le, amikor a tesztek befejeződtek@Listeners (érték = Guru99Reporter.class)nyilvános osztály TestGuru99ForReporter {@Test (prioritás = 0, leírás = "testReporterOne")public void testReporterOne () {// Sikeres tesztesetAssert.assertTrue (igaz);}@Test (prioritás = 1, leírás = "testReporterTwo")public void testReporterTwo () {// SikertesztesetAssert.assertTrue (hamis);}}
A kimenet hasonló lesz
A jelentések PDF és e-mailje
A fenti jelentés megvalósítása meglehetősen egyszerű és világos, hogy el tudja kezdeni a jelentések testreszabását.
De vállalati környezetben nagyon testreszabott jelentéseket kell készítenie. Itt van a forgatókönyv, amellyel foglalkozni fogunk
- Hozzon létre egyéni jelentést PDF formában
- Készítsen képernyőképeket CSAK a hibákról. Link a képernyőképekhez PDF-ben
- E-mail küldése a PDF-ről
A PDF jelentés így néz ki
A pdf jelentés elkészítéséhez Java API ITextre van szükségünk . Töltse le itt. Van egy másik egyéni hallgatói osztály, amely valóban végrehajtja ezt az IText jar-t és pdf jelentést készít nekünk. Töltse le itt
A fenti ábra a létrehozott PDF-jelentés alapértelmezett formátumát mutatja. Testreszabhatja
Így fogjuk ezt megközelíteni
1. lépés: Hozzon létre egy alaposztályt
2. lépés: A JypersionListerner.Java testreszabása (PDF létrehozási kód)
3. lépés: Hozzon létre egy TestGuru99PDFEmail.java fájlt, amely végrehajtja a teszteseteket, létrehozza a PDF-t
4. lépés: Csatolja a kódot a TestGuru99PDFEmail.java fájlba, hogy PDF-jelentést küldjön e-mailben
Vizsgáljuk meg ezeket a lépéseket
1. lépés: Hozzon létre alaposztályt
Ez az alaposztály rendelkezik a WebDriver és a Screenshot készítésével kapcsolatos funkciókkal
csomag PDFEmail;import java.io.File;import 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;public class BaseClass {statikus WebDriver illesztőprogram;nyilvános statikus WebDriver getDriver () {if (meghajtó == null) {WebDriver illesztőprogram;System.setProperty ("webdriver.gecko.driver", "C: \\ geckodriver.exe");illesztőprogram = new FirefoxDriver ();}visszatérő sofőr;}/ *** Ez a funkció képernyőképet készít* @param webdriver* @param fájlWithPath* @ dob kivétel* /public static void takeSnapShot (WebDriver webdriver, String fileWithPath) dobja a Kivételt {// A webillesztő-objektum konvertálása TakeScreenshot formátumbaTakesScreenshot scrShot = ((TakesScreenshot) webdriver);// Hívja a getScreenshotAs módszert képfájl létrehozásáraFile SrcFile = scrShot.getScreenshotAs (OutputType.FILE);// Képfájl áthelyezése új rendeltetési helyreFile DestFile = új fájl (fileWithPath);// Fájl másolása a rendeltetési helyreFileUtils.copyFile (SrcFile, DestFile);}}
2. lépés: Testreszabhatja a JypersionListener.java fájlt
Maradunk az alapértelmezett jelentésformátumnál. De 2 testreszabást hajtunk végre
- Kód hozzáadása arra utasítja a JypersionListeneret, hogy készítsen képernyőképet a Hibáról
- A képernyőkép elkészítésének linkjét csatolja a PDF-jelentésben
Kód hozzáadásával csatolja a képernyőképet a PDF-jelentéshez
3. lépés: Hozzon létre egy TestGuru99PDFEmail.java fájlt, amely végrehajtja a teszteseteket, létrehozza a PDF-t
- Itt hozzáadjuk a JyperionListener.class-t hallgatóként
- 3 tesztesetet hajtunk végre.
- Az Assert.assertTrue használatával 2 tesztesetet bukunk meg, miközben csak egyet adunk át.
- A sikertelen tesztesetekről a képernyőkép csak a testreszabásunknak megfelelően készül
csomag PDFEmail;import java.util.Tulajdonságok;import javax.activation.DataHandler;javax.activation.DataSource importálása;importálja a javax.activation.FileDataSource;importálja a javax.mail.BodyPart;importálja a javax.mail.Message;importálja a javax.mail.MessagingException;importálja a javax.mail.Multipart;import javax.mail.Session;importálja a javax.mail.Transport;importálja a javax.mail.internet.AddressException;importálja a javax.mail.internet.InternetAddress;importálja a javax.mail.internet.MimeBodyPart;importálja a javax.mail.internet.MimeMessage;importálja a javax.mail.internet.MimeMultipart;import org.openqa.selenium.WebDriver;import org.testng.Assert;import org.testng.annotations.AfterSuite;import org.testng.annotations.Figyelők;import org.testng.annotations.Test;import riporter.JyperionListener;// Figyelő hozzáadása a pdf jelentés létrehozásához@Listeners (JyperionListener.class)a public class TestGuru99PDFReport kiterjeszti a BaseClass {WebDriver illesztőprogram;// A Testcase nem sikerült, így a képernyőkép létrehozása@Tesztpublic void testPDFReportOne () {meghajtó = BaseClass.getDriver ();driver.get ("http://google.com");Assert.assertTrue (hamis);}// A Testcase nem sikerült, így a képernyőkép létrehozása@Tesztpublic void testPDFReporTwo () {meghajtó = BaseClass.getDriver ();driver.get ("http: /guru99.com");Assert.assertTrue (hamis);}// A tesztpróba sikeres lesz, ezért nem készül képernyőkép@Tesztpublic void testPDFReportThree () {meghajtó = BaseClass.getDriver ();driver.get ("http://demo.guru99.com");Assert.assertTrue (igaz);}
4. lépés: Csatolja a kódot a TestGuru99PDFEmail.java fájlba, hogy PDF-jelentést küldjön e-mailben
- A @AfterSuite feljegyzéssel fogjuk elküldeni a PDF-jelentés e-mailjét
- E-mailt küldünk a Gmail segítségével
- Az E-mail engedélyezéséhez sok olyan könyvtárfájlt kell importálnia, mint a mail.jar, pop3.jar, smptp.jar stb.
- Mielőtt ezt végrehajtaná, írja be a from, e-mail címhez és jelszóhoz
// A teljes végrehajtás után küldjön pdf jelentést e-mailben@AfterSuitepublic void tearDown () {sendPDFReportByGMail (" Ez az e-mail cím védett a spam robotoktól, engedélyezni kell a Javascript használatát a megtekintéshez.", "password", "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(); } } }
Töltse le a teljes projektet itt
Megjegyzés: Amikor rákattintunk a képernyőn megjelenő linkre pdf-ben, akkor megjelenik a biztonsági párbeszédpanel. Engedélyeznünk kell, hogy ez a párbeszédpanel megnyissa a pdf-t.
Az így generált e-mail így fog kinézni
Összegzés:
- A TestNG beépített jelentési képességgel rendelkezik.
- A tesztesetek teljes végrehajtása után a TestNG létrehoz egy teszt-kimeneti mappát a projekt gyökérkönyvtárában.
- A teszt-output mappában két fő jelentés található, az index.html és az emailable-report.html.
- A TestNG jelentés testreszabásához két interfészt kell megvalósítanunk, az ITestListener és az IReporter programokat.
- Ha a végrehajtás között jelentést kell kapnunk, akkor ITestListenerre van szükségünk.
- A teljes végrehajtás utáni zárójelentés létrehozásához be kell vezetnünk az IReporter alkalmazást.
- A képernyőkép elkészítésével a Selenium WebDriver alkalmazásban be kell írnunk a Cast WebDriver programot a TakesScreenShot felületre.
- A pdf jelentések előállításához hozzá kell adnunk az IText jar-ot a projekthez.
Töltse le a bemutatóhoz tartozó Selenium Project fájlokat ebben az oktatóanyagban