TestNG एक टेस्टिंग फ्रेमवर्क है, जो विभिन्न प्रकार के टेस्ट डिजाइनों को कवर करता है जैसे कि यूनिट टेस्ट, फंक्शनल टेस्ट, एंड टू एंड टेस्ट, UI टेस्ट और इंटीग्रेशन टेस्ट।
आप अपने Testng कोड में एक या एक से अधिक परीक्षण मामले चला सकते हैं।
यदि परीक्षण प्राथमिकता को परिभाषित नहीं किया गया है, तो कई परीक्षण मामलों को चलाने के दौरान, TestNG शून्य (0) के रूप में सभी @ प्राथमिकता को असाइन करता है।
अब, दौड़ते हुए; निचली प्राथमिकताओं को पहले निर्धारित किया जाएगा।
इस ट्यूटोरियल में, आप सीखेंगे -
- प्राथमिकता के बिना TestNG कोड का डेमो
- वर्णमाला क्रम में प्राथमिकता के बिना TestNG कोड का डेमो
- TestNG में प्राथमिकता कैसे निर्धारित करें
- उसी प्राथमिकता के साथ तरीके
- प्राथमिकता वाले (समान प्राथमिकता वाले) और गैर-प्राथमिकता वाले दोनों तरीकों को मिलाकर
प्राथमिकता के बिना TestNG कोड का डेमो
चलो एक परिदृश्य लेते हैं जहां सभी परीक्षण मामलों को पारित करने के लिए अनुक्रमण की आवश्यकता होगी:
परिदृश्य: एक कोड उत्पन्न करें जहां आपको एक विशिष्ट कीवर्ड "फेसबुक" के साथ Google खोज करने की आवश्यकता होती है। अब, सत्यापित करें कि ब्राउज़र शीर्षक "फेसबुक - Google खोज" में बदल गया है।
नोट: प्रत्येक चरण जिसे आप कोड करते हैं, अलग-अलग तरीकों से होना चाहिए
विधि 1 : ओपन ब्राउज़र फ़ायरफ़ॉक्स (OpenBrowser ()) कहते हैं
विधि 2 : Google.com लॉन्च करें (launchGoogle ())
विधि 3 : "फेसबुक" (PerformSearchAndClick1stLink ()) का उपयोग करके एक खोज करें
विधि 4 : Google खोज पृष्ठ शीर्षक (FaceBookPageTitleVerification ()) सत्यापित करें
हमारे परिदृश्य के लिए कोड :
आयात org.openqa.selenium.By;आयात org.openqa.selenium.WebDriver;आयात org.openqa.selenium.firefox.FirefoxDriver;आयात org.testng.Assert;आयात org.testng.annotations.Test;सार्वजनिक वर्ग प्राथमिकता_In_testNG {WebDriver ड्राइवर;// विधि 1: ओपन ब्राउनर फ़ायरफ़ॉक्स कहते हैं@परीक्षासार्वजनिक शून्य ओपनब्रोसर () {ड्राइवर = नया फ़ायरफ़ॉक्सड्राइवर ();}// विधि 2: Google.com लॉन्च करें@परीक्षासार्वजनिक शून्य लॉन्चDriver.get ("http://www.google.co.in");}// विधि 3: "फेसबुक" का उपयोग करके एक खोज करें@परीक्षासार्वजनिक शून्य peformSeachAndClick1stLink () {driver.findElement (By.xpath (".//* ई। शीर्षक = 'खोज']"))। SendKeys ("फेसबुक");}// विधि 4: Google खोज पृष्ठ शीर्षक सत्यापित करें।@परीक्षासार्वजनिक शून्य फेसबुक पेजेजटाइल वेरिफिकेशन () थ्रो अपवाद {Driver.findElement (By.xpath (".//* I.@ value = 'Search']") पर क्लिक करें ();थ्रेड.स्लीप (3000);Assert.assertEquals (driver.getTitle () शामिल हैं ("फेसबुक - Google खोज"), सच);}}
संहिता की व्याख्या
जैसा कि ऊपर उल्लेख किया गया है कि हमने प्रत्येक कार्रवाई को स्वतंत्र तरीकों से करने के लिए 4 परीक्षण मामले बनाए हैं।
- पहला तरीका (ओपनब्रोसर) फ़ायरफ़ॉक्स ब्राउज़र को इनिशियलाइज़ करने के लिए कहता है।
- दूसरी विधि (लॉन्चहाउस) में कहा गया है कि Google.com लॉन्च करना आरंभिक ब्राउज़र में है।
- तीसरी विधि (peformSeachAndClick1stLink) कहा गया है कि xpath साथ (खोज बॉक्स में एक खोज करें ( ".//*[@title='Search ']") के रूप में एक खोज शब्द के साथ फेसबुक और
- चौथा और आखिरी तरीका (फेसबुकपेजेजटल वेरिफिकेशन) कहता है कि Google के सर्च आइकन पर क्लिक करें और सत्यापित करें कि ब्राउजर का शीर्षक फेसबुक - गूगल सर्च में बदल दिया गया है ।
अब इस कोड को testNG का उपयोग करके चलाएं जैसा कि वीडियो में दिखाया गया है कि आप पाएंगे कि सभी टेस्ट केस विफल हो रहे हैं। असफलता का कारण: जैसा कि पिछले परीक्षण मामले को पारित करने की निर्भरता है, केवल वर्तमान में चल रहे परीक्षण मामले से ही पारित किया जाएगा।
इस मामले में,
- पहली विधि जिसे निष्पादित किया जाता है वह है ओपनब्रोसर ()। यह पास हो गया क्योंकि इसकी कोई निर्भरता नहीं है।
- दूसरी विधि निष्पादित की गई है फेसबुकपेजेज वैलीफिकेशन (); यह विफल हो रहा है क्योंकि हम खोज बटन पर क्लिक करने और ब्राउज़र शीर्षक सत्यापित करने का प्रयास कर रहे हैं।
- आप देख सकते हैं कि यदि खोज गतिविधि प्रक्रिया नहीं है तो कोई अन्य चरण कैसे पारित हो सकता है। इसलिए, यही कारण है कि मेरे परीक्षण के मामले विफल हो रहे हैं।
PASSED: openBrowserFAILED: फेस बुकपेजेजिटेरिफिकेशनविफल: लॉन्चहाउसविफल: peformSeachAndClick1stLink
वर्णमाला क्रम में प्राथमिकता के बिना TestNG कोड का डेमो
यदि हम किसी भी प्राथमिकता का उल्लेख नहीं करते हैं, तो testng कोड में उनके कार्यान्वयन के स्थान के बावजूद उनकी पद्धति के नाम के वर्णानुक्रम पर आधारित @Test विधियों को निष्पादित करेगा।
पैकेज com.guru.testngannotations;आयात org.testng.annotations.Test;सार्वजनिक वर्ग@परीक्षासार्वजनिक शून्य c_method () {System.out.println ("मैं विधि C में हूं");}@परीक्षासार्वजनिक शून्य b_method () {System.out.println ("मैं बी विधि में हूं");}@परीक्षासार्वजनिक शून्य a_method () {System.out.println ("I am in method A");}@परीक्षासार्वजनिक शून्य e_method () {System.out.println ("मैं विधि E में हूं");}@परीक्षासार्वजनिक शून्य d_method () {System.out.println ("मैं विधि डी में हूं");}}
उत्पादन
मैं विधि ए में हूंमैं विधि बी में हूंमैं विधि C में हूंमैं विधि डी में हूंमैं विधि ई में हूँ
यद्यपि हमने विधियों को एक यादृच्छिक तरीके से परिभाषित किया था (c, b, a, e, d), अंडकोष ने वर्णमाला के क्रम पर विचार करके अपनी विधि के नाम के आधार पर विधियों को निष्पादित किया था और आउटपुट में भी परिलक्षित हुआ था।
TestNG में प्राथमिकता कैसे निर्धारित करें
जैसा कि आपने पिछले उदाहरण में देखा है कि इस परिदृश्य को पारित करने के लिए अनुक्रमण की आवश्यकता होती है, इसलिए हम पिछले भाग को प्राथमिकता पैरामीटर के साथ संशोधित करेंगे ताकि प्रत्येक परीक्षण उन्हें सौंपी गई प्राथमिकता के विरुद्ध चले।
अब जैसा कि आप देख सकते हैं कि हमने प्रत्येक परीक्षण मामले को प्राथमिकता दी है, इसका मतलब है कि परीक्षण के मामले में सबसे कम प्राथमिकता वाले मूल्य को पहले निष्पादित किया जाएगा।
कार्रवाई में टेस्टएनजी में प्राथमिकता
आयात org.openqa.selenium.By;आयात org.openqa.selenium.WebDriver;आयात org.openqa.selenium.firefox.FirefoxDriver;आयात org.testng.Assert;आयात org.testng.annotations.Test;सार्वजनिक वर्ग प्राथमिकता_In_testNG {WebDriver ड्राइवर;// विधि 1: ओपन ब्राउज़र फ़ायरफ़ॉक्स कहते हैं@ टेस्ट (प्राथमिकता = 1)सार्वजनिक शून्य ओपनब्रोसर () {ड्राइवर = नया फ़ायरफ़ॉक्सड्राइवर ();}// विधि 2: Google.com लॉन्च करें@ टेस्ट (प्राथमिकता = 2)सार्वजनिक शून्य लॉन्चDriver.get ("http://www.google.co.in");}// विधि 3: "फेसबुक" का उपयोग करके एक खोज करें@ टेस्ट (प्राथमिकता = 3)सार्वजनिक शून्य peformSeachAndClick1stLink () {driver.findElement (By.xpath (".//* ई। शीर्षक = 'खोज']"))। SendKeys ("फेसबुक");}// विधि 4: Google खोज पृष्ठ शीर्षक सत्यापित करें।@ टेस्ट (प्राथमिकता = 4)सार्वजनिक शून्य फेसबुक पेजेजटाइल वेरिफिकेशन () थ्रो अपवाद {Driver.findElement (By.xpath (".//* I.@ value = 'Search']") पर क्लिक करें ();थ्रेड.स्लीप (3000);Assert.assertEquals (driver.getTitle () शामिल हैं ("फेसबुक - Google खोज"), सच);}}
संहिता की व्याख्या
प्रत्येक टेस्टकेस को प्राथमिकता देने के बाद, उपरोक्त कोड को टेस्टएनजी का उपयोग करके चलाएं जैसा कि नीचे दिए गए वीडियो -2 में दिखाया गया है।
यहां, आप देख सकते हैं कि परीक्षण मामलों को प्राथमिकता दी जाती है। निचली प्राथमिकता वाले परीक्षण मामले को पहले निष्पादित किया जाता है यानी अब परीक्षण मामलों में प्राथमिकता के अनुसार अनुक्रमिक निष्पादन होता है। इसलिए, सभी परीक्षण मामले अब गुजर रहे हैं।
ग्रहण के कंसोल पर ध्यान दें:
आउटपुट :
PASSED: openBrowserPASSED: launchGooglePASSED: peformSearchAndClick1stLinkPASSED: फेस बुकपेजेजिटलाइज़ेशन
नंबर 0 की सर्वोच्च प्राथमिकता है (इसे पहले निष्पादित किया जाएगा) और प्राथमिकता दी गई संख्या के आधार पर जाती है अर्थात, 0 की प्राथमिकता सर्वोच्च होती है। 1 की तुलना में 2 और इसी तरह की सर्वोच्च प्राथमिकता होती है।
पैकेज com.guru.testngannotations;आयात org.testng.annotations.Test;सार्वजनिक वर्ग@ टेस्ट (प्राथमिकता = 6)सार्वजनिक शून्य c_method () {System.out.println ("मैं विधि C में हूं");}@ टेस्ट (प्राथमिकता = 9)सार्वजनिक शून्य b_method () {System.out.println ("मैं बी विधि में हूं");}@ टेस्ट (प्राथमिकता = 1)सार्वजनिक शून्य a_method () {System.out.println ("I am in method A");}@ टेस्ट (प्राथमिकता = 0)सार्वजनिक शून्य e_method () {System.out.println ("मैं विधि E में हूं");}@ टेस्ट (प्राथमिकता = 3)सार्वजनिक शून्य d_method () {System.out.println ("मैं विधि डी में हूं");}}
उत्पादन
मैं विधि ई में हूँमैं विधि ए में हूंमैं विधि डी में हूंमैं विधि C में हूंमैं विधि बी में हूं
यहां हमने प्राथमिकताएं 0,1,3,6,9 के रूप में प्रदान की हैं। इसलिए, प्राथमिकता वाले तरीके को पहले निष्पादित किया जाता है और फिर प्राथमिकता -1 और इसी तरह की विधि को निष्पादित किया जाता है। यहाँ वर्णमाला क्रम विधि नाम पर विचार नहीं किया जाएगा क्योंकि हमने प्राथमिकताएँ प्रदान की हैं
समान प्राथमिकता वाले तरीके:
एक मौका हो सकता है कि विधियों में समान प्राथमिकता हो सकती है। उन मामलों में, testng विधि के नामों की वर्णमाला क्रम को मानता है जिनकी प्राथमिकता समान है।
पैकेज com.guru.testngannotations;आयात org.testng.annotations.Test;सार्वजनिक वर्ग@ टेस्ट (प्राथमिकता = 6)सार्वजनिक शून्य c_method () {System.out.println ("मैं विधि C में हूं");}@ टेस्ट (प्राथमिकता = 9)सार्वजनिक शून्य b_method () {System.out.println ("मैं बी विधि में हूं");}@ टेस्ट (प्राथमिकता = 6)सार्वजनिक शून्य a_method () {System.out.println ("I am in method A");}@ टेस्ट (प्राथमिकता = 0)सार्वजनिक शून्य e_method () {System.out.println ("मैं विधि E में हूं");}@ टेस्ट (प्राथमिकता = 3)सार्वजनिक शून्य d_method () {System.out.println ("मैं विधि डी में हूं");}}
उत्पादन
मैं विधि ई में हूँमैं विधि डी में हूंमैं विधि ए में हूंमैं विधि C में हूंमैं विधि बी में हूं
यहां 'ई' और 'डी' को उनके प्राथमिकता मूल्यों के आधार पर निष्पादित किया जाता है। लेकिन विधियों 'a' और 'c' में समान प्राथमिकता मूल्य (6) होता है। तो, यहाँ testng 'a' और 'c' के वर्णमाला क्रम को मानता है और उसी के अनुसार उन्हें क्रियान्वित करता है।
प्राथमिकता वाले (समान प्राथमिकता वाले) और गैर-प्राथमिकता वाले दोनों तरीकों को मिलाकर:
इस स्थिति में, हम दो मामलों को एक परीक्षण वर्ग में शामिल करेंगे।
- समान प्राथमिकता वाले तरीके।
- एक से अधिक गैर-प्राथमिकता वाले तरीके।
पैकेज com.guru.testngannotations;आयात org.testng.annotations.Test;सार्वजनिक वर्ग@परीक्षा()सार्वजनिक शून्य c_method () {System.out.println ("मैं विधि C में हूं");}@परीक्षा()सार्वजनिक शून्य b_method () {System.out.println ("मैं बी विधि में हूं");}@ टेस्ट (प्राथमिकता = 6)सार्वजनिक शून्य a_method () {System.out.println ("I am in method A");}@ टेस्ट (प्राथमिकता = 0)सार्वजनिक शून्य e_method () {System.out.println ("मैं विधि E में हूं");}@ टेस्ट (प्राथमिकता = 6)सार्वजनिक शून्य d_method () {System.out.println ("मैं विधि डी में हूं");}}
आउटपुट:
मैं विधि बी में हूंमैं विधि C में हूंमैं विधि ई में हूँमैं विधि ए में हूंमैं विधि डी में हूं
PASSED: b_methodPASSED: c_methodPASSED: e_methodPASSED: a_methodPASSED: d_method
स्पष्टीकरण:
पहली प्राथमिकता: गैर-प्राथमिकता वाले तरीके: 'c' और 'b': वर्णानुक्रम के आधार पर 'b' को पहले निष्पादित किया गया और फिर 'c'।
दूसरी प्राथमिकता: प्राथमिकता वाले तरीके: 'ए', 'ई' और 'डी': 'ई' को पहले निष्पादित किया गया क्योंकि इसमें सर्वोच्च प्राथमिकता (0) थी। चूँकि 'a' और 'd' विधियों की प्राथमिकता समान थी, इसलिए testng ने उनके तरीकों के नामों के वर्णानुक्रम को माना। इसलिए, उनके बीच, 'ए' को पहले निष्पादित किया गया और फिर 'डी'।
TestNG में केस-संवेदी
बस आपकी जानकारी के लिए testNG में प्राथमिकता को परिभाषित करने के लिए एक मानक वाक्यविन्यास है अर्थात @Test (प्राथमिकता = 4) , मान लीजिए कि आप इसे किसी अन्य वाक्यविन्यास में कह रहे हैं @Test (PRIORITY = 1) तो आपकी IDE इसे संकलन त्रुटि के रूप में दिखाएगी । नीचे दी गई छवि देखें:
निष्कर्ष:
जैसा कि आपने देखा है कि यदि किसी विशिष्ट क्रम में टेस्ट-केस के सेट को चलाने की आवश्यकता है, तो इसे एक रन टूल के रूप में टेस्टएनजी का उपयोग करके प्रायोरिटी का उपयोग करके आसानी से किया जा सकता है ।
यह ट्यूटोरियल रमनदीप सिंह और रामा कृष्णा गद्दे के योगदान के कारण संभव हुआ है