में समूह TestNG
⚡ स्मार्ट सारांश
में समूह TestNG यह आपको टेस्ट मेथड्स को लॉजिकल लेबल्स के साथ टैग करने और फिर उन्हें XML सूट के माध्यम से शामिल या बाहर करने की सुविधा देता है। यह तरीका कोड को दोबारा लिखे बिना स्मोक, रिग्रेशन और डिपेंडेंसी-ड्रिवन रन को सरल बनाता है। Java कोड।

TestNG यह एक परीक्षण ढांचा है जो यूनिट, फंक्शनल, एंड-टू-एंड, यूआई और इंटीग्रेशन परीक्षणों को कवर करता है। Java परियोजनाओं.
आप एक XML सूट बनाकर और उसे Maven के माध्यम से ट्रिगर करके एक या एक से अधिक पैकेज (एक पैकेज परिभाषित निर्देशिका लेआउट में संबंधित क्लासों को समाहित करता है) चला सकते हैं।
TestNG उदाहरण सहित समूह
आप समूहों का उपयोग करते हैं TestNG कब:
- आप कार्यात्मक क्षेत्र के आधार पर कई वर्गों में परीक्षण विधियों को बिखेरना नहीं चाहते हैं, और
- आप चयनित टेस्ट केसों को छोड़ना (निष्पादित न करना) चाहते हैं, मानो वे कोडबेस में मौजूद ही न हों।
- इन दोनों लक्ष्यों को प्राप्त करने के लिए, आप विधियों को तार्किक समूहों में वर्गीकृत करते हैं। TestNG फिर यह XML सूट में घोषित "शामिल करें" और "बाहर करें" फ़िल्टरों का सम्मान करता है।
नीचे दिया गया उदाहरण एक परीक्षण विधि पर उपयोग किए गए समूह-टैगिंग सिंटैक्स को दर्शाता है।
यहां दो समूह नामों का उपयोग किया गया है, अर्थात् bonding और strong_tiesये तार्किक लेबल हैं जिन्हें आप अपने प्रोजेक्ट के अनुसार नाम बदल सकते हैं।
RSI <groups> टैग XML सूट के भीतर समूह फ़िल्टर की शुरुआत को चिह्नित करता है।
फिर आप टैग किए गए वर्गों में से एक चयनित समूह चुनने के लिए XML को अनुकूलित करते हैं। नीचे दिया गया उदाहरण समूह घोषणा सिंटैक्स दिखाता है।
<रन>
<शामिल नाम=“बंधन” />
</रन>
</समूहों>
मान लीजिए कि एक ही क्लास में 10 टेस्ट मेथड हैं।
उन विधियों में से:
- 6 तरीकों से ले जाया जाता है
bondingसमूह, और - 4 तरीकों से ले जाया जाता है
strong_tiesसमूह.
इसके बाद, आप मेवन को सेटअप करते हैं और Java पथों का उपयोग करें Eclipse एक IDE के माध्यम से XML फ़ाइलों के अंदर समूह उपयोग को प्रदर्शित करना। Java-आधारित मेवन प्रोजेक्ट।
इसके लिए XML बनाएं TestNG टैग के साथ
- Maven फ्रेमवर्क में XML (एक्सटेंसिबल मार्कअप लैंग्वेज) फ़ाइल एक या अधिक परीक्षणों के लिए कॉन्फ़िगरेशन संग्रहीत करती है, जिन्हें इसके अंदर घोषित किया जाता है। टैग।
- प्रत्येक परीक्षण प्रविष्टि को एक में लपेटा जाता है टैग और एक या अधिक को धारण कर सकता है TestNG कक्षाएं।
- A Java एक या अधिक के साथ कक्षा @परीक्षा इसकी विधियों पर टिप्पणियों को एक के रूप में माना जाता है TestNG वर्ग.
एक कार्यशील testng.xml फ़ाइल बनाने के लिए कई टैग क्रमानुसार दिखाई देते हैं, अर्थात् , , और .
- RSI टैग में सुइट-स्तर का नाम होता है जिसका उपयोग किया जाता है TestNG निष्पादन सारांशों के लिए रिपोर्ट।
- RSI <test name=”Guru 99 स्मोक टेस्ट डेमो”> टैग में एक तार्किक परीक्षण नाम होता है; रिपोर्ट इसका उपयोग पास, फेल और स्किप की संख्या के साथ-साथ कुल निष्पादन समय और समूह मेटाडेटा के लिए करती है।
- RSI टैग टेस्ट क्लास को इंगित करता है, जहाँ
com.group.guru99पैकेज है औरTC_Class1यह क्लास का नाम है।
<!DOCTYPE सूट प्रणाली “http://testng.org/testng-1.0.dtd”>
<सूट नाम=“सुइट”>
<परीक्षण नाम="Guru 99 स्मोक टेस्ट डेमो”>
<समूहों>
<रन>
<शामिल नाम=“मजबूत_संबंध” />
</रन>
</समूहों>
<कक्षाएं>
<कक्षा नाम=“com.group.guru99.TC_Class1” />
</कक्षाएं>
</परीक्षण>
</सूट>
इस XML कॉन्फ़िगरेशन का संदर्भ अगले अनुभागों में दिए गए वीडियो वॉकथ्रू में दिया गया है।
परीक्षण XML में “बहिष्कृत करें” या “शामिल करें”
यदि छोटे फ़िल्टर के लिए समूह तंत्र जटिल लगता है, तो testng.xml सूट आपको नाम के आधार पर व्यक्तिगत परीक्षण विधियों को शामिल या बाहर करने की सुविधा भी देता है।
टैग शामिल करें: इंक्लूड टैग के लिए सिंटैक्सशामिल नाम=“${TEST_CASE_NAME}” />
नोट: आप एक ही रन में कई टेस्ट केस शामिल या बाहर कर सकते हैं, और यही सिंटैक्स ग्रुप फिल्टर पर भी लागू होता है।
क्रमबद्ध निष्पादन के लिए dependsOnGroups का उपयोग करना
साधारण समावेशन से परे, TestNG एक समूह को दूसरे पर निर्भर रहने की अनुमति देता है dependsOnGroups विशेषता। रनर यह सुनिश्चित करता है कि पैरेंट ग्रुप में मौजूद हर मेथड किसी भी डिपेंडेंट मेथड के शुरू होने से पहले ही समाप्त हो जाए, जिससे पूर्व शर्तें विश्वसनीय बनी रहती हैं।
- पहले लॉगिन करें, फिर लेनदेन करें: लॉगिन विधियों को टैग करें
group = "auth"और टैग स्थानांतरण परीक्षण के साथdependsOnGroups = {"auth"}लॉगिन सफल होने के बाद ही ट्रांसफर टेस्ट चलते हैं। - विफलता होने पर छोड़ दें: यदि पैरेंट ग्रुप में कोई मेथड विफल हो जाता है, TestNG यह आश्रित विधियों को पूरी तरह से विफल करने के बजाय उन्हें छोड़ देने के रूप में चिह्नित करता है, जिससे रिपोर्ट सटीक बनी रहती हैं।
- alwaysRun के साथ संयोजित करें: सफाई विधियों को निर्धारित किया जाना चाहिए
alwaysRun = trueइसलिए, अपस्ट्रीम समूह के विफल होने पर भी टियरडाउन प्रक्रिया चलती रहती है।
यह पैटर्न उन एंड-टू-एंड सूट के लिए आम है जहां यूआई अभिकथन शुरू होने से पहले एपीआई सेटअप पूरा होना चाहिए।
रन TestNG कोड को समूहीकृत करें, शामिल करें, बाहर निकालें (वीडियो डेमो)
नीचे इसका विस्तृत विवरण दिया गया है। Java कोड और XML सूट जो इसे संचालित करते हैं समूह बनाना, बाहर करना और शामिल करना व्यवहार.
परीक्षण परिदृश्य: लांच Guru99 डेमो बैंकिंग साइट पर, लॉगिन पेज पर कुछ तत्वों को सत्यापित करें, क्रेडेंशियल दर्ज करें, और लॉगिन करने के बाद डैशबोर्ड पर कुछ आइटमों को दोबारा सत्यापित करें।
नोट: प्रत्येक चरण अपने स्वयं के मेथड में मौजूद होता है, लेकिन रनटाइम पर क्रम XML सूट में मौजूद प्रविष्टियों पर निर्भर करता है।
- विधि 1: ब्राउज़र को प्रारंभ करें और लॉन्च करें URL (
tc01LaunchURL()). - विधि 2: लॉगिन पेज के शीर्षक की जाँच करें (
tc02VerifyLaunchPage()). - विधि 3: लॉगिन फॉर्म पर उपयोगकर्ता नाम और पासवर्ड दर्ज करें (
tc03EnterCredentials()). - विधि 4: उपयोगकर्ता डैशबोर्ड पर प्रबंधक आईडी की उपस्थिति सत्यापित करें (
tc04VerifyLoggedInPage()). - विधि 5: उपयोगकर्ता डैशबोर्ड पर अतिरिक्त लिंक सत्यापित करें (
tc05VerifyHyperlinks()).
Code इस परिदृश्य के लिए:
आयात जावा.util.concurrent.TimeUnit;
आयात org.openqa.सेलेनियम.बाय;
आयात org.openqa.selenium.WebDriver;
आयात org.openqa.selenium.फ़ायरफ़ॉक्स.Firefoxचालक;
आयात org.testng.Assert;
आयात org.testng.annotations.टेस्ट;
सार्वजनिक वर्ग टीसी_क्लास1 {
सार्वजनिक स्थैतिक अंतिम वेबड्राइवर वेबड्राइवर = नई Firefoxचालक();
तार launchPageHeading = “//h3[text()='Guru99 बैंक]”;
अंतिम तार उपयोगकर्ता नाम_तत्व = “//input[@name='uid']”, पासवर्ड_तत्व = “//input[@name='password']”,
signIn_element = “//input[@name='btnLogin']”;
अंतिम तार उपयोगकर्ता नाम_मान = “mngr28642”, पासवर्ड_मान = “ydAnate”;
अंतिम तार प्रबंधक आईडी = “//td[contains(text(),'मैनेजर आईडी')]”;
अंतिम तार नया ग्राहक = “//a[@href='addcustomerpage.php']”, फंड ट्रांसफर = “//a[@href='FundTransInput.php']”;
/** यह टेस्ट केस वेबड्राइवर को आरंभ करता है */
@परीक्षा(समूहों = { “बंधन”, “मजबूत_संबंध” })
सार्वजनिक शून्य tc01लॉन्चURL() {
वेबड्राइवर.मैनेज().विंडो().मैक्सिमाइज();
वेबड्राइवर.मैनेज().टाइमआउट्स().इम्प्लिसिटलीवेट(20, समय इकाई.सेकंड);
वेबड्राइवर.गेट("https://www.demo.guru99.com/V4/");
}
/** लॉगिन पेज पर हेडिंग की मौजूदगी की जाँच करता है */
@परीक्षा(समूहों = { “बंधन” })
सार्वजनिक शून्य tc02VerifyLaunchPage() {
Assert.assertTrue(webDriver.findElement(By.xpath(launchPageHeading)).isDisplayed(),
"होम पेज का शीर्षक प्रदर्शित नहीं हो रहा है");
System.out.println("होम पेज का शीर्षक प्रदर्शित हो रहा है");
}
/** उपयोगकर्ता नाम और पासवर्ड दर्ज करता है, फिर साइन इन पर क्लिक करता है */
@परीक्षा(समूहों = { “बंधन”, “मजबूत_संबंध” })
सार्वजनिक शून्य 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();
}
/** डैशबोर्ड पर मैनेजर आईडी की पुष्टि करता है */
@परीक्षा(समूहों = { “मजबूत_संबंध” })
सार्वजनिक शून्य tc04VerifyLoggedInPage() {
Assert.assertTrue(webDriver.findElement(By.xpath(managerID)).isDisplayed(),
“मैनेजर आईडी लेबल प्रदर्शित नहीं हो रहा है”);
System.out.println(“मैनेजर आईडी लेबल प्रदर्शित हो रहा है”);
}
/** डैशबोर्ड पर नए ग्राहक लिंक और फंड ट्रांसफर लिंक की जांच करता है */
@परीक्षा(समूहों = { “बंधन” })
सार्वजनिक शून्य tc05VerifyHyperlinks() {
Assert.assertTrue(webDriver.findElement(By.xpath(newCustomer)).isEnabled(),
“नए ग्राहक का हाइपरलिंक प्रदर्शित नहीं हो रहा है”);
System.out.println(“नए ग्राहक का हाइपरलिंक प्रदर्शित हो रहा है”);
Assert.assertTrue(webDriver.findElement(By.xpath(fundTransfer)).isEnabled(),
“फंड ट्रांसफर का हाइपरलिंक प्रदर्शित नहीं हो रहा है”);
System.out.println(“फंड ट्रांसफर का हाइपरलिंक प्रदर्शित हो रहा है”);
}
}
कृपया ध्यान दें: डेमो बैंकिंग क्रेडेंशियल लगभग 20 दिनों तक मान्य रहते हैं, इसलिए उस अवधि के समाप्त होने के बाद स्थानीय रूप से चलाने पर अमान्य क्रेडेंशियल की त्रुटि दिखाई दे सकती है।
कोड का स्पष्टीकरण:
प्रत्येक क्रिया के लिए एक, कुल पाँच परीक्षण विधियाँ हैं, जिनमें से प्रत्येक में एक groups पर विशेषता @Test एनोटेशन।
दो तार्किक समूह लेबल हैं strong_ties और bonding.
- पहली और तीसरी विधि दोनों को ले जाती है
bondingऔरstrong_tiesइसलिए, जब भी सूट में कोई भी समूह शामिल होता है, तो वे चलते हैं। साझा के लिए यह एक सामान्य पैटर्न है। परीक्षण का मामला कदम। - दूसरी विधि को केवल टैग किया गया है
bondingइसलिए यह केवल तभी चलता है जबbondingसमूह शामिल है। - चौथी विधि को केवल टैग किया गया है
strong_tiesइसलिए यह तभी चलता है जब वह समूह शामिल होता है। - पांचवीं विधि को केवल इसके साथ टैग किया गया है
bondingइसलिए यह केवल तभी चलता है जबbondingसमूह शामिल है।
निष्पादन के चार परिदृश्य निम्नलिखित हैं:
परिदृश्य 1: समूह की परवाह किए बिना प्रत्येक परीक्षण विधि चलाएँ। हटाएँ <groups> चल रहे XML से ब्लॉक।
परिदृश्य 2: केवल चयनित समूह से संबंधित विधियों को ही चलाएँ, अर्थात् strong_ties or bondingकृपया नीचे दिए गए वीडियो को देखें।
- वीडियो के पहले भाग में,
<groups>ब्लॉक को कमेंट आउट कर दिया गया है, इसलिए हर टेस्ट मेथड चलती है। - दूसरे भाग में, समूह फ़िल्टर को बहाल कर दिया जाता है, और केवल मिलान करने वाली विधियाँ ही चलती हैं।
परिदृश्य 3: चयनित टेस्ट केसों को छोड़ने के लिए एक्सक्लूड फ़िल्टर लागू करें। कृपया वीडियो देखें।
- डेमो में शामिल नहीं है
tc02चल रहे XML में नाम से, और परिणाम रिपोर्ट पुष्टि करती है कि बहिष्कृत विधि नहीं चलती है।
परिदृश्य 4: केवल चलाने के लिए शामिल फ़िल्टर लागू करें tc01LaunchURL, tc03EnterCredentials, तथा tc05VerifyHyperlinksकृपया वीडियो देखें।
इस रन में, केवल इनक्लूड फ़िल्टर में सूचीबद्ध विधियाँ ही, ठीक उसी प्रकार निष्पादित होती हैं जैसे कॉन्फ़िगर की गई हैं।
नीचे दिए गए लिंक से सैंपल प्रोजेक्ट डाउनलोड करें।
ऊपर दिए गए लिंक को डाउनलोड करें Code
निष्कर्ष
में समूह TestNG बड़े पैमाने पर संरचना लाना Selenium और एक बार के क्लास स्प्लिट्स को डिक्लेरेटिव XML फिल्टर से बदलकर यूनिट सूट्स को बेहतर बनाया जा सकता है।
अपने तरीकों को टैग करें @Test(groups = {...}), तब उपयोग करें <include>, <exclude>, तथा dependsOnGroups स्मोक, रिग्रेशन और एंड-टू-एंड रन को एक ही मेवन प्रोजेक्ट से चलाने के लिए TestNG 7.x।

