परीक्षण समूह – शामिल करें और निकालें (उदाहरण)
TestNG एक परीक्षण ढांचा है जो विभिन्न प्रकार के परीक्षण डिज़ाइनों जैसे यूनिट, कार्यात्मक, एंड-टू-एंड, यूआई और एकीकरण परीक्षणों को कवर करता है।
आप XML बनाकर और उसे मेवेन के माध्यम से चलाकर एकल या एकाधिक पैकेज (यहां पैकेज का अर्थ है एक उचित डायरेक्टर प्रारूप में क्लासों के समूह को समाहित करना) चला सकते हैं।
TestNG उदाहरण सहित समूह
हम समूहों का उपयोग करते हैं टेस्टिंग कब,
- हम अलग-अलग वर्गों में परीक्षण विधियों को अलग-अलग परिभाषित नहीं करना चाहते हैं (कार्यक्षमता के आधार पर) और
- साथ ही कुछ परीक्षण मामलों को अनदेखा करना चाहते हैं (निष्पादित नहीं करना चाहते हैं) जैसे कि वे कोड में मौजूद ही नहीं हैं।
- इसलिए ऐसा करने के लिए हमें उन्हें समूहबद्ध करना होगा। यह testNG में समर्थित “शामिल करें” और “बहिष्कृत करें” तंत्र का उपयोग करके किया जाता है।
नीचे दिए गए उदाहरण में, हमने XML फ़ाइल में समूहों का उपयोग करने का सिंटैक्स दिखाया है।
@Test (groups = { "bonding", "strong_ties" })
यहां हम 2 समूह नामों का उपयोग कर रहे हैं अर्थात "बॉन्डिंग" और "स्ट्रॉन्ग_टाईज़" (ये तार्किक नाम हैं जिन्हें आपकी इच्छानुसार बदला जा सकता है)।
<groups>
टैग XML में समूहों की शुरुआत को परिभाषित करता है।
टेस्ट क्लास से बताए गए समूह को चुनने के लिए अपने XML को कस्टमाइज़ करें। नीचे XML फ़ाइल में समूहों को घोषित करने का सिंटैक्स दिया गया है, जैसे
<groups> <run> <include name="bonding" /> </run> </groups>
तो, मान लीजिए कि एक क्लास में 10 परीक्षण विधियाँ हैं।
उनमे से,
- 6 विधियाँ “बॉन्डिंग” समूह में टैग की गई हैं और
- 4 “strong_ties” समूह में हैं
आगे बढ़ते हुए, हम maven/ सेट करने जा रहे हैंJava पथ और का उपयोग करें Eclipse XML फ़ाइलों का उपयोग करके समूहों के उपयोग को प्रदर्शित करने के लिए IDE Java आधारित मावेन परियोजना.
इसके लिए XML बनाएं TestNG टैग के साथ
- मावेन फ्रेमवर्क में XML (एक्सटेंसिबल मार्कअप लैंग्वेज) फ़ाइल में एक या अधिक परीक्षणों की जानकारी होती है और इसे द्वारा परिभाषित किया जाता है टैग.
- XML में परीक्षण जानकारी को निम्न द्वारा दर्शाया जाता है टैग और इसमें एक या अधिक हो सकते हैं TestNG कक्षाएं।
- A Java वह वर्ग जिसमें @परीक्षा परीक्षण विधियों के ऊपर एनोटेशन को इस प्रकार परिभाषित किया गया है TestNG तरीकों.
एक कार्यशील testNG xml बनाने के लिए अनुक्रम में कई टैग का उपयोग किया जाता है , और
- पहला है टैग, जो एक तार्किक नाम रखता है जो निष्पादन रिपोर्ट तैयार करने के लिए testNG को दी गई पूरी जानकारी को परिभाषित करता है।
- दूसरा है ध्यान दें कि यह एक तार्किक नाम है जो परीक्षण निष्पादन रिपोर्ट की जानकारी रखता है जैसे पास, फेल, स्किप परीक्षण मामले और अन्य जानकारी जैसे निष्पादन के लिए कुल समय और समूह जानकारी
- तीसरा हैcom.group.guru99.TC_क्लास1” />, com.group.guru99 प्रयुक्त पैकेज है, तथा टेस्ट क्लास का नाम TC_Class1 है।
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> <suite name="Suite"> <test name="Guru 99 Smoke Test Demo"> <groups> <run> <include name="strong_ties" /> </run> </groups> <classes> <class name="com.group.guru99.TC_Class1" /> </classes> </test> </suite>
हम इस XML का उपयोग नीचे दिए गए अनुभागों में दिए गए आगामी वीडियो के लिए करेंगे।
परीक्षण XML में “बहिष्कृत करें” या “शामिल करें”
मान लीजिए कि आपको समूह तंत्र का उपयोग जटिल लग रहा है, तो testNG XML परीक्षण को शामिल/बहिष्कृत करने की कार्यक्षमता को सुगम बनाता है।
Exclude Tag: Syntax for exclude tag <exclude name="${TEST_CASE_NAME}" /> Include Tag: Syntax for include tag <include name="${TEST_CASE_NAME}" />
नोट: हम एक बार में एकाधिक परीक्षण मामलों को शामिल/बहिष्कृत कर सकते हैं, जो समूहों के साथ भी काम करता है।
रन TestNG कोड को समूहीकृत करें, शामिल करें, बाहर निकालें (वीडियो डेमो)
का स्पष्टीकरण Java कोड और XML के साथ समूह बनाना, बहिष्कृत करना और सम्मिलित करना XML में टैग.
परिदृश्य का परीक्षण करें: गुरु99 डेमो बैंकिंग साइट लॉन्च करें, उसके बाद लॉगिन पृष्ठ पर कुछ चीजों को सत्यापित करें, क्रेडेंशियल दर्ज करें, और लॉग इन करते समय एप्लिकेशन पर कुछ नई चीजों को फिर से सत्यापित करें।
नोट: आपके द्वारा कोड किए गए प्रत्येक चरण को अलग-अलग विधियों में घोषित किया जाना चाहिए, लेकिन निष्पादित होने पर, यह XML फ़ाइल में प्रविष्टियों के आधार पर परीक्षण विधियों को निष्पादित करेगा।
- विधि 1: ब्राउज़र और लॉन्च URL प्रारंभ करें (tc01LaunchURL())
- विधि 2: लॉगिन पृष्ठ शीर्षक सत्यापित करें (tc02VerifyLaunchPage())
- विधि 3: लॉगिन फॉर्म पर उपयोगकर्ता नाम और पासवर्ड दर्ज करें (tc03EnterCredentials())
- विधि 4: उपयोगकर्ता डैशबोर्ड पर प्रबंधक आईडी की उपस्थिति सत्यापित करें (tc04VerifyLoggedInPage())
- विधि 5: उपयोगकर्ता डैशबोर्ड पर कुछ और लिंक सत्यापित करें (tc05VerifyHyperlinks())
हमारे परिदृश्य के लिए कोड:
package com.group.guru99; import java.util.concurrent.TimeUnit; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; import org.testng.Assert; import org.testng.annotations.Test; public class TC_Class1 { public static final WebDriver webDriver = new FirefoxDriver();; String launchPageHeading = "//h3[text()='Guru99 Bank']"; final String userName_element = "//input[@name='uid']", password_element = "//input[@name='password']", signIn_element = "//input[@name='btnLogin']"; final String userName_value = "mngr28642", password_value = "ydAnate"; final String managerID = "//td[contains(text(),'Manger Id')]"; final String newCustomer = "//a[@href='addcustomerpage.php']", fundTransfer = "//a[@href='FundTransInput.php']"; /** * This test case will initialize the webDriver */ @Test(groups = { "bonding", "strong_ties" }) public void tc01LaunchURL() { webDriver.manage().window().maximize(); webDriver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS); webDriver.get("http://www.demo.guru99.com/V4/"); } /** * Will check the presence of Heading on Login Page */ @Test(groups = { "bonding" }) public void tc02VerifyLaunchPage() { Assert.assertTrue(webDriver.findElement(By.xpath(launchPageHeading)).isDisplayed(), "Home Page heading is not displayed"); System.out.println("Home Page heading is displayed"); } /** * This test case will enter User name, password and will then click on * signIn button */ @Test(groups = { "bonding", "strong_ties" }) public void tc03EnterCredentials() { webDriver.findElement(By.xpath(userName_element)).sendKeys(userName_value); webDriver.findElement(By.xpath(password_element)).sendKeys(password_value); webDriver.findElement(By.xpath(signIn_element)).click(); } /** * This test case will verify manger's ID presence on DashBoard */ @Test(groups = { "strong_ties" }) public void tc04VerifyLoggedInPage() { Assert.assertTrue(webDriver.findElement(By.xpath(managerID)).isDisplayed(), "Manager ID label is not displayed"); System.out.println("Manger Id label is displayed"); } /** * This test case will check the presence of presence of New customer link * And FundTransfer link in Left pannel */ @Test(groups = { "bonding" }) public void tc05VerifyHyperlinks() { Assert.assertTrue(webDriver.findElement(By.xpath(newCustomer)).isEnabled(), "New customer hyperlink is not displayed"); System.out.println("New customer hyperlink is displayed"); Assert.assertTrue(webDriver.findElement(By.xpath(fundTransfer)).isEnabled(), "Fund Transfer hyperlink is not displayed"); System.out.println("Fund Transfer hyperlink is displayed"); } }
कृपया ध्यान दें: क्रेडेंशियल केवल 20 दिनों के लिए वैध हैं, इसलिए यदि आप अपने स्थानीय मशीन पर कोड चलाने का प्रयास करते हैं, तो आपको अमान्य क्रेडेंशियल त्रुटि का सामना करना पड़ सकता है।
कोड की व्याख्या:
जैसा कि ऊपर बताया गया है, हमने प्रत्येक क्रिया को स्वतंत्र तरीकों से करने के लिए 5 परीक्षण मामले बनाए हैं।
प्रत्येक विधि के लिए, हमने एक समूह पैरामीटर को किसी मान के साथ संबद्ध किया है।
मूलतः, ये विभेदक समूहों के नाम हैं, अर्थात् “मजबूत संबंध” और “संबंध”।
- पहली और तीसरी विधियाँ “बॉन्डिंग”, “स्ट्रॉन्ग_टाईज़” से टैग की गई हैं, जिसका अर्थ है कि यदि XML को किसी भी समूह में अपडेट किया गया है, तो यह परीक्षण का मामला दौड़ेगा।
- दूसरी विधि केवल "बॉन्डिंग" समूह के लिए टैग की गई है, इसका मतलब है कि यदि XML को बॉन्डिंग समूह के साथ अपडेट किया जाता है। केवल उस स्थिति में यह परीक्षण केस चलेगा।
- चौथा टेस्ट केस strong_ties समूह से टैग किया गया है, जिसका अर्थ है कि यह टेस्ट केस केवल तभी चलेगा जब XML को strong_ties समूह नाम के साथ अपडेट किया जाएगा।
- अंतिम लेकिन महत्वपूर्ण बात यह है कि पांचवां परीक्षण मामला बॉन्डिंग समूह से जुड़ा हुआ है, जिसका अर्थ है कि यह परीक्षण मामला केवल तभी चलेगा जब XML को बॉन्डिंग समूह नाम के साथ अद्यतन किया जाएगा।
तो कुल मिलाकर, हमारे पास 4 परिदृश्य हैं;
परिदृश्य 1: हम ग्रुप नाम की परवाह किए बिना सभी टेस्ट केस चलाना चाहते हैं। इस मामले में, हम रनिंग XML से ग्रुप टैग हटा देंगे।
परिदृश्य 2: हम कुछ परीक्षण चलाना चाहते हैं जो केवल किसी एक समूह से संबंधित हों, जैसे कि strong_ties या bonding। कृपया देखें:
- इस वीडियो में, ग्रुप पैरामीटर को रनिंग XML से कमेंट किया गया है। इसलिए, आप देखेंगे कि सभी टेस्ट केस निष्पादित किए गए थे।
- वीडियो के क्रम में, अब हमने XML में समूह का नाम शामिल कर दिया है, आप देख सकते हैं कि केवल उस समूह से संबंधित विशिष्ट परीक्षण मामले ही चल रहे हैं।
परिदृश्य 3: हम परीक्षण मामले को बाहर करने के लिए बहिष्कृत तंत्र का उपयोग कर रहे हैं। कृपया वीडियो देखें
- आप देख सकते हैं कि हमने रनिंग XML में उनके नाम लिखकर कुछ टेस्ट केस (tc02) को बाहर कर दिया है। अंतिम परिणाम में, उल्लेखित टेस्ट केस नहीं चले।
परिदृश्य 4: अंत में, हम परीक्षण मामलों (tc01LaunchURL, tc03EnterCredentials, और tc05VerifyHyperlinks) को शामिल करने के लिए शामिल परीक्षण तंत्र का उपयोग कर रहे हैं। कृपया वीडियो देखें
इस वीडियो में, आप देखेंगे कि XML में उल्लिखित परीक्षण मामले केवल परीक्षण निष्पादन के दौरान ही चल रहे हैं।
कृपया उपरोक्त उदाहरण के लिए कोड को यहाँ से डाउनलोड करें-
निष्कर्ष
हमने यहां मावेन परियोजना में XML का उपयोग करके परीक्षण मामलों को चलाने का एक अपेक्षाकृत नया तरीका सीखा है।
हमने टेस्टएनजी का संक्षिप्त परिचय देकर शुरुआत की और समूह, बहिष्कृत और सम्मिलित के पूर्ण तकनीकी विनिर्देश के साथ आगे बढ़े।