डेटाप्रॉइडर & TestNG XML: सेलेनियम में उदाहरण (उदाहरण)

विषय - सूची:

Anonim

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

सेलेनियम में पैरामीटर

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

इस ट्यूटोरियल में, आप सीखेंगे-

  • TestNG में पैरामीटर का प्रकार-
  • Testng.xml के साथ पैरामीटर एनोटेशन
  • समस्या निवारण
  • डाटाप्रोविडर का उपयोग करने वाले पैरामीटर
  • DataProvider को विभिन्न वर्ग से मंगवाएं
  • डाटाप्रोवाइडर में पैरामीटर के प्रकार

TestNG में पैरामीटर का प्रकार-

पैरामीटराइजेशन को और अधिक स्पष्ट करने के लिए, हम सेलेनियम वेबड्राइवर - TestGG के लिए सबसे लोकप्रिय फ्रेमवर्क में पैरामीटर विकल्प के माध्यम से जाएंगे ।

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

  1. Parameters एनोटेशन और TestNG XML फ़ाइल की मदद से ।

  2. DataProvider एनोटेशन की मदद से ।

Testng.xml से पैरामीटर सूट या परीक्षण स्तर हो सकते हैं

DataProvider से पैरामीटर पैरामीटर और ITestContext को पैरामीटर के रूप में ले सकते हैं।

आइए उनका विस्तार से अध्ययन करें -

TestNG में पैरामीटर्स एनोटेशन

TestNG में पैरामीटर्स एनोटेशन .xml फ़ाइल का उपयोग करके तर्कों के रूप में परीक्षण विधियों में मानों को पास करने के लिए प्रयोग किया जाता है। उपयोगकर्ताओं को रन समय के दौरान परीक्षण विधियों के लिए मानों को पारित करने की आवश्यकता हो सकती है। @ पैरामीटर्स एनोटेशन विधि का उपयोग किसी भी विधि में किया जा सकता है, जिसमें @ टेस्ट, @ बाय, @ ए और उसके बाद @ एनोटेशन है।

Testng.xml के साथ पैरामीटर एनोटेशन

जब आप जटिलता से निपटना चाहते हैं तो एनोटेशन का उपयोग करके पैरामीटर चुनें और इनपुट संयोजनों की संख्या कम होती है।

देखते हैं कि यह कैसे काम करता है

परिदृश्य का परीक्षण करें

चरण 1) ब्राउज़र लॉन्च करें और Google.com पर जाएं

चरण 2) एक खोज कीवर्ड दर्ज करें

चरण 3) इनपुट मूल्य को सत्यापित करें जो हमारे परीक्षण डेटा द्वारा प्रदान किया गया है

चरण 4) सभी मूल्यों के इनपुट होने तक 2 और 3 दोहराएं

परीक्षण लेखक SearchKey
गुरु ९९ भारत
कृष्णा अमेरीका
भूपेश चीन

बिना मापदंडों के इसे कैसे करें, इसका एक उदाहरण यहां दिया गया है

पैकेज पैरामीटर;आयात org.testng.annotations.Test;आयात org.testng.AssertJUnit;आयात java.util.concurrent.TimeUnit;आयात org.openqa.selenium.By;आयात org.openqa.selenium.WebDriver;आयात org.openqa.selenium.WebElement;आयात org.openqa.selenium.firefox.FirefoxDriver;सार्वजनिक वर्ग NoParameterWithTestNGXML {स्ट्रिंग ड्राइवरपथ = "C: \\ geckodriver.exe";WebDriver ड्राइवर;@परीक्षासार्वजनिक शून्य परीक्षणस्ट्रिंग लेखक = "गुरु99";स्ट्रिंग सर्चकी = "भारत";System.setProperty ("webdriver.gecko.driver", driverPath);ड्राइवर = नया फ़ायरफ़ॉक्सड्राइवर ();ड्राइवर।Driver.get ("https://google.com");WebElement searchText = driver.findElement (By.name ("q"));// गूगल टेक्स्ट बॉक्स में टेक्स्ट सर्च करनाsearchText.sendKeys (searchKey);System.out.println ("Welcome ->" + author + "आपकी खोज कुंजी है ->" + searchKey);System.out.println ("थ्रेड अब सो जाएगा");थ्रेड.स्लीप (3000);System.out.println ("Google खोज बॉक्स में मान =" + searchText.getAttribute ("मूल्य") + "::: इनपुट द्वारा दिया गया मूल्य =" + searchKey);// Google खोज बॉक्स में मूल्य की पुष्टिAssertJUnit.assertTrue (searchText.getAttribute ("value")। EqualsIgnoreCase (searchKey);}}

एक अध्ययन, उपरोक्त उदाहरण। जरा कल्पना करें कि जब हम 3 इनपुट संयोजनों के लिए ऐसा करते हैं तो कोड कितना जटिल हो जाएगा

अब, आइए TestNG का उपयोग करके इसे पैरामीटर करें

ऐसा करने के लिए, आप की आवश्यकता होगी

  • एक XML फ़ाइल बनाएँ जो मापदंडों को संग्रहीत करेगा
  • परीक्षण में, एनोटेशन @ पैरामीटर्स जोड़ें

यहाँ पूरा कोड है

टेस्ट स्तर TestNG.xml

<सुइट का नाम = "टेस्टसुइट" थ्रेड-काउंट = "3"><पैरामीटर नाम = "लेखक" मान = "गुरु99" /><पैरामीटर का नाम = "searchKey" मान = "भारत" /><परीक्षण नाम = "टेस्टगुरु"><पैरामीटर का नाम = "searchKey" मान = "UK" /><कक्षाएं><वर्ग नाम = "पैरामीटर। पैरामीटर व्यास

ParameterWithTestNGXML.java फ़ाइल

पैकेज पैरामीटर;आयात org.testng.AssertJUnit;आयात java.util.concurrent.TimeUnit;आयात org.openqa.selenium.By;आयात org.openqa.selenium.WebDriver;आयात org.openqa.selenium.WebElement;आयात org.openqa.selenium.firefox.FirefoxDriver;आयात org.testng.annotations.Optional;आयात org.testng.annotations.Parameters;आयात org.testng.annotations.Test;सार्वजनिक वर्गस्ट्रिंग ड्राइवरपथ = "C: \\ geckodriver.exe";WebDriver ड्राइवर;@परीक्षा@ पैरामीटर्स ({"लेखक", "searchKey"})public void testParameterWithXML (@Optional ("Abc") स्ट्रिंग लेखक, स्ट्रिंग सर्चकी) InterruptedException {फेंकता हैSystem.setProperty ("webdriver.gecko.driver", driverPath);ड्राइवर = नया फ़ायरफ़ॉक्सड्राइवर ();ड्राइवर।Driver.get ("https://google.com");WebElement searchText = driver.findElement (By.name ("q"));// गूगल टेक्स्ट बॉक्स में टेक्स्ट सर्च करनाsearchText.sendKeys (searchKey);System.out.println ("Welcome ->" + author + "आपकी खोज कुंजी है ->" + searchKey);System.out.println ("थ्रेड अब सो जाएगा");थ्रेड.स्लीप (3000);System.out.println ("Google खोज बॉक्स में मान =" + searchText.getAttribute ("मूल्य") + "::: इनपुट द्वारा दिया गया मूल्य =" + searchKey);// Google खोज बॉक्स में मूल्य की पुष्टिAssertJUnit.assertTrue (searchText.getAttribute ("value")। EqualsIgnoreCase (searchKey);}}

स्क्रिप्ट चलाने के निर्देश, XML फ़ाइल का चयन करें और टेस्ट एनजी सूट के रूप में चलाएं

.Xml फ़ाइल पर राइट क्लिक करें -> इस रूप में चलाएँ -> Testng सूट (नोट: सूट)

अब, मापदंडों को 2 स्तरों पर परिभाषित किया जा सकता है

  1. सुइट स्तर - <सुइट> TestNG XML फ़ाइल के टैग के अंदर पैरामीटर एक सूट स्तर पैरामीटर होगा।
  2. परीक्षण स्तर - XML ​​फ़ाइल का परीक्षण करने के टैग के अंदर पैरामीटर एक परीक्षण स्तर पैरामीटर होगा।

यहाँ सुइट स्तर के मापदंडों के साथ एक ही परीक्षा है

ध्यान दें: यदि पैरामीटर नाम सुइट स्तर और परीक्षण स्तर में समान है तो परीक्षण स्तर पैरामीटर को सुइट स्तर पर वरीयता मिलेगी। तो, उस स्थिति में, उस परीक्षण स्तर के अंदर सभी वर्ग ओवरराइड पैरामीटर को साझा करेंगे, और अन्य स्तर जो परीक्षण स्तर से बाहर हैं, सूट स्तर पैरामीटर साझा करेंगे।

समस्या निवारण

Testng.xml में समस्या # 1 पैरामीटर मान को संबंधित परीक्षण विधि के पैरामीटर से टाइपकास्ट नहीं किया जा सकता है, यह एक त्रुटि फेंक देगा।

निम्नलिखित उदाहरण पर विचार करें

यहां, 'लेखक' विशेषता 'गुरु 99' के बराबर है, जो एक स्ट्रिंग है और इसी परीक्षण विधि में इसके पूर्णांक मान की उम्मीद है, इसलिए हमें यहां एक अपवाद मिलेगा।

समस्या # 2 आपके @Parameters का परीक्षण में एक समान मान नहीं है।

आप परीक्षण पद्धति में संबंधित पैरामीटर में @optional एनोटेशन जोड़कर इस स्थिति को हल कर सकते हैं ।

अंक # 3: आप Testng.xml का उपयोग करके एक ही पैरामीटर के कई मानों का परीक्षण करना चाहते हैं

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

TestNG में डेटा प्रदाता

TestNG में डेटा प्रदाता एक ऐसी विधि है जिसका उपयोग तब किया जाता है जब उपयोगकर्ता को जटिल मापदंडों को पारित करने की आवश्यकता होती है। कॉम्प्लेक्स पैरामीटर्स को जावा से बनाने की आवश्यकता होती है जैसे कि कॉम्प्लेक्स ऑब्जेक्ट्स, प्रॉपर्टी फाइलों से ऑब्जेक्ट या डेटाबेस से डेटा प्रोवाइडर विधि द्वारा पास किया जा सकता है। विधि @DataProvider द्वारा एनोटेट की गई है और यह ऑब्जेक्ट की एक सरणी लौटाती है।

डाटाप्रोविडर का उपयोग करने वाले पैरामीटर

@ पैरामीटर्स एनोटेशन आसान है लेकिन डेटा के कई सेटों के साथ परीक्षण करने के लिए हमें डेटा प्रदाता का उपयोग करने की आवश्यकता है।

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

यह डेटा चालित अवधारणा TestDG में @DataProvider एनोटेशन द्वारा हासिल की गई है ।

इसका केवल एक विशेषता 'नाम' है । यदि आप नाम विशेषता निर्दिष्ट नहीं करते हैं, तो DataProvider का नाम संबंधित विधि नाम के समान होगा।

डेटा प्रदाता परीक्षण पद्धति और परीक्षण विधि के लिए दो-आयामी जावा ऑब्जेक्ट लौटाता है , एम * एन प्रकार के ऑब्जेक्ट सरणी में एम बार आमंत्रित करेगा। उदाहरण के लिए, यदि DataProvider 2 * 3 ऑब्जेक्ट की एक सरणी देता है, तो संबंधित टेस्टकेस को हर बार 3 मापदंडों के साथ 2 बार लागू किया जाएगा।

पूरा उदाहरण

पैकेज पैरामीटर;आयात java.util.concurrent.TimeUnit;आयात org.openqa.selenium.By;आयात org.openqa.selenium.WebDriver;आयात org.openqa.selenium.WebElement;आयात org.openqa.selenium.firefox.FirefoxDriver;आयात org.testng.Assert;आयात org.testng.annotations.BeforeTest;आयात org.testng.annotations.DataProvider;आयात org.testng.annotations.Test;सार्वजनिक वर्गWebDriver ड्राइवर;स्ट्रिंग ड्राइवरपथ = "C: \\ geckodriver.exe";@ सबसे पहलेसार्वजनिक शून्य सेटअप () {// फ़ायरफ़ॉक्स ड्राइवर ऑब्जेक्ट बनाएंSystem.setProperty ("webdriver.gecko.driver", driverPath);ड्राइवर = नया फ़ायरफ़ॉक्सड्राइवर ();ड्राइवर।Driver.get ("https://google.com");}/ ** Google खोज बॉक्स को सत्यापित करने के लिए टेस्ट केस* @ अपार लेखक* @ अपरम सर्चकै* @ तीर बाधित* /@Test (dataProvider = "SearchProvider")सार्वजनिक शून्य परीक्षणमैथोड (स्ट्रिंग लेखक, स्ट्रिंग सर्चकी) इंटरप्टेड अपवाद को फेंकता है {{{WebElement searchText = driver.findElement (By.name ("q"));// google searchbox में search valuesearchText.sendKeys (searchKey);System.out.println ("Welcome ->" + author + "आपकी खोज कुंजी है ->" + searchKey);थ्रेड.स्लीप (3000);स्ट्रिंग testValue = searchText.getAttribute ("मूल्य");System.out.println (testValue + ":::: + searchKey);searchText.clear ();// सत्यापित करें कि क्या Google खोज बॉक्स में मान सही हैAssert.assertTrue (testValue.equalsIgnoreCase (searchKey));}}/ *** @ ग्रेट ऑब्जेक्ट* और दूसरे कॉलम में 'searchKey' है* /@DataProvider (नाम = "SearchProvider")सार्वजनिक वस्तु [] [] getDataFromDataprovider () {नई वस्तु लौटाएं [] []{{{"गुरु ९९", "भारत"},{"कृष्ण", "यूके"},{"भूपेश", "यूएसए"}};}}

DataProvider को विभिन्न वर्ग से मंगवाएं

डिफ़ॉल्ट रूप से, DataProvider उसी कक्षा में रहता है जहां परीक्षण विधि या उसका आधार वर्ग है। इसे किसी अन्य कक्षा में रखने के लिए हमें डेटा प्रदाता विधि को स्थिर बनाने की आवश्यकता है और परीक्षण विधि में हमें @Test एनोटेशन में एक विशेषता dataProviderClass जोड़ने की आवश्यकता है ।

कोड उदाहरण

TestClass ParameterDataproviderWithClassLevel.java

पैकेज पैरामीटर;आयात java.util.concurrent.TimeUnit;आयात org.openqa.selenium.By;आयात org.openqa.selenium.WebDriver;आयात org.openqa.selenium.WebElement;आयात org.openqa.selenium.firefox.FirefoxDriver;आयात org.testng.Assert;आयात org.testng.annotations.BeforeTest;आयात org.testng.annotations.Test;सार्वजनिक वर्गWebDriver ड्राइवर;स्ट्रिंग ड्राइवरपथ = "C: \\ geckodriver.exe";@ सबसे पहलेसार्वजनिक शून्य सेटअप () {System.setProperty ("webdriver.gecko.driver", driverPath);ड्राइवर = नया फ़ायरफ़ॉक्सड्राइवर ();ड्राइवर।Driver.get ("https://google.com");}@Test (dataProvider = "SearchProvider", dataProviderClass = DataproviderClass .club)सार्वजनिक शून्य परीक्षणमैथोड (स्ट्रिंग लेखक, स्ट्रिंग सर्चकी) इंटरप्टेड अपवाद को फेंकता है {WebElement searchText = driver.findElement (By.name ("q"));// गूगल टेक्स्ट बॉक्स में टेक्स्ट सर्च करेंsearchText.sendKeys (searchKey);System.out.println ("Welcome ->" + author + "आपकी खोज कुंजी है ->" + searchKey);थ्रेड.स्लीप (3000);// खोज बॉक्स से पाठ प्राप्त करेंस्ट्रिंग testValue = searchText.getAttribute ("मूल्य");System.out.println (testValue + ":::: + searchKey);searchText.clear ();// सत्यापित करें कि क्या खोज बॉक्स का सही मूल्य हैAssert.assertTrue (testValue.equalsIgnoreCase (searchKey));}}

DataproviderClass.java

पैकेज पैरामीटर;आयात org.testng.annotations.DataProvider;सार्वजनिक वर्ग@DataProvider (नाम = "SearchProvider")सार्वजनिक स्थैतिक वस्तु [] [] getDataFromDataprovider () {नई वस्तु लौटाएँ [] [] {{"गुरु ९९", "भारत"},{"कृष्ण", "यूके"},{"भूपेश", "यूएसए"}};}}

डाटाप्रोवाइडर में पैरामीटर के प्रकार

डेटाप्रोइडर विधि द्वारा समर्थित दो प्रकार के पैरामीटर हैं।

विधि - अगर वही dataProvider विभिन्न परीक्षण विधि के साथ अलग तरीके से व्यवहार करना चाहिए, विधि पैरामीटर का उपयोग करें।

निम्नलिखित उदाहरण में,

  • हम जाँचते हैं कि क्या विधि का नाम testMethodA है।
  • यदि हाँ मान का एक सेट लौटाएँ
  • मूल्य का एक और सेट वापस करें
पैकेज पैरामीटर;आयात java.lang.reflect.Method;आयात java.util.concurrent.TimeUnit;आयात org.openqa.selenium.By;आयात org.openqa.selenium.WebDriver;आयात org.openqa.selenium.WebElement;आयात org.openqa.selenium.firefox.FirefoxDriver;आयात org.testng.Assert;आयात org.testng.annotations.BeforeTest;आयात org.testng.annotations.DataProvider;आयात org.testng.annotations.Test;सार्वजनिक वर्गWebDriver ड्राइवर;स्ट्रिंग ड्राइवरपथ = "C: \\ geckodriver.exe";@ सबसे पहलेसार्वजनिक शून्य सेटअप () {System.setProperty ("webdriver.gecko.driver", driverPath);ड्राइवर = नया फ़ायरफ़ॉक्सड्राइवर ();ड्राइवर।Driver.get ("https://google.com");}@Test (dataProvider = "SearchProvider")public void testMethodA (स्ट्रिंग लेखक, स्ट्रिंग सर्चकी) इंटरप्टेड एक्ससेप्शन फेंकता है {WebElement searchText = driver.findElement (By.name ("q"));// खोज बॉक्स में खोज पाठsearchText.sendKeys (searchKey);// प्रिंट लेखक और खोज स्ट्रिंगSystem.out.println ("Welcome ->" + author + "आपकी खोज कुंजी है ->" + searchKey);थ्रेड.स्लीप (3000);स्ट्रिंग testValue = searchText.getAttribute ("मूल्य");System.out.println (testValue + ":::: + searchKey);searchText.clear ();// सत्यापित करें कि क्या Google टेक्स्ट बॉक्स सही मान दिखा रहा हैAssert.assertTrue (testValue.equalsIgnoreCase (searchKey));}@Test (dataProvider = "SearchProvider")सार्वजनिक शून्य परीक्षणमैथोडब (स्ट्रिंग सर्चकी) इंटरप्टेड अपवाद को फेंकता है {{{WebElement searchText = driver.findElement (By.name ("q"));// खोज बॉक्स में खोज पाठsearchText.sendKeys (searchKey);// प्रिंट केवल खोज स्ट्रिंगSystem.out.println ("स्वागत -> अज्ञात उपयोगकर्ता आपकी खोज कुंजी है ->" + searchKey);थ्रेड.स्लीप (3000);स्ट्रिंग testValue = searchText.getAttribute ("मूल्य");System.out.println (testValue + ":::: + searchKey);searchText.clear ();// सत्यापित करें कि क्या Google टेक्स्ट बॉक्स सही मान दिखा रहा हैAssert.assertTrue (testValue.equalsIgnoreCase (searchKey));}}/ *** यहाँ DataProvider परीक्षण विधि नाम के आधार पर रिटर्निंग वैल्यू* @ अपार मी* @वापसी** /@DataProvider (नाम = "SearchProvider")सार्वजनिक वस्तु [] [] getDataFromDataprovider (विधि m) {अगर (m.getName ()। equalsIgnoreCase ("testMethodA")) {नई वस्तु लौटाएँ [] [] {{"गुरु ९९", "भारत"},{"कृष्ण", "यूके"},{"भूपेश", "यूएसए"}}}अन्य{नई वस्तु लौटाएँ [] [] {{"कनाडा"},{"रूस"},{"जापान"}}}}}

यहाँ आउटपुट है

ITestContext - यह समूहों पर आधारित परीक्षण मामलों के लिए अलग-अलग पैरामीटर बनाने के लिए उपयोग कर सकता है।

वास्तविक जीवन में, आप परीक्षण विधियों, मेजबानों, परीक्षण के विन्यास के आधार पर पैरामीटर मूल्यों को अलग करने के लिए ITestContext का उपयोग कर सकते हैं।

निम्नलिखित कोड उदाहरण में

  • हमारे पास 2 समूह A & B हैं
  • प्रत्येक परीक्षण विधि एक समूह को सौंपी जाती है
  • यदि समूह का मान A है, तो एक विशेष डेटा सेट लौटाया जाता है
  • यदि समूह का मान B है, तो एक और डेटा सेट लौटाया जाता है
पैकेज पैरामीटर;आयात java.util.concurrent.TimeUnit;आयात org.openqa.selenium.By;आयात org.openqa.selenium.WebDriver;आयात org.openqa.selenium.WebElement;आयात org.openqa.selenium.firefox.FirefoxDriver;आयात org.testng.Assert;आयात org.testng.ITestContext;आयात org.testng.annotations.BeforeTest;आयात org.testng.annotations.DataProvider;आयात org.testng.annotations.Test;सार्वजनिक वर्गWebDriver ड्राइवर;स्ट्रिंग ड्राइवरपथ = "C: \\ geckodriver.exe";@BeforeTest (समूह = {"A", "B"})सार्वजनिक शून्य सेटअप () {System.setProperty ("webdriver.gecko.driver", driverPath);ड्राइवर = नया फ़ायरफ़ॉक्सड्राइवर ();ड्राइवर।Driver.get ("https://google.com");}@Est (dataProvider = "SearchProvider", समूह = "A")public void testMethodA (स्ट्रिंग लेखक, स्ट्रिंग सर्चकी) इंटरप्टेड एक्ससेप्शन फेंकता है {{{// google textbox सर्च करेंWebElement searchText = driver.findElement (By.name ("q"));// इस पर एक मूल्य खोजेंsearchText.sendKeys (searchKey);System.out.println ("Welcome ->" + author + "आपकी खोज कुंजी है ->" + searchKey);थ्रेड.स्लीप (3000);स्ट्रिंग testValue = searchText.getAttribute ("मूल्य");System.out.println (testValue + ":::: + searchKey);searchText.clear ();// खोज बॉक्स में सही मान सत्यापित करेंAssert.assertTrue (testValue.equalsIgnoreCase (searchKey));}}@Test (dataProvider = "SearchProvider", समूह = "B")सार्वजनिक शून्य परीक्षणमैथोडब (स्ट्रिंग सर्चकी) इंटरप्टेड अपवाद को फेंकता है {{{// google सर्च बॉक्स खोजेWebElement searchText = driver.findElement (By.name ("q"));// इस पर एक मूल्य खोजेंsearchText.sendKeys (searchKey);System.out.println ("स्वागत -> अज्ञात उपयोगकर्ता आपकी खोज कुंजी है ->" + searchKey);थ्रेड.स्लीप (3000);स्ट्रिंग testValue = searchText.getAttribute ("मूल्य");System.out.println (testValue + ":::: + searchKey);searchText.clear ();// खोज बॉक्स में सही मान सत्यापित करेंAssert.assertTrue (testValue.equalsIgnoreCase (searchKey));}}/ *** यहां DAPProvider ITestContext के आधार पर ऑब्जेक्ट एरे प्रदान करेगा* @ अपरम c* @वापसी* /@DataProvider (नाम = "SearchProvider")सार्वजनिक वस्तु [] [] getDataFromDataprovider (ITestContext c) {ऑब्जेक्ट [] [] groupArray = null;के लिए (स्ट्रिंग समूह: c.getIncludedGroups ()) {अगर (group.equalsIgnoreCase ("A")) {groupArray = नई वस्तु [] [] {{"गुरु ९९", "भारत"},{"कृष्ण", "यूके"},{"भूपेश", "यूएसए"}};टूटना;}और यदि (group.equalsIgnoreCase ("B")){{groupArray = नई वस्तु [] [] {{"कनाडा"},{"रूस"},{"जापान"}};}टूटना;}वापसी groupArray;}}

ध्यान दें: यदि आप सीधे अपने testng वर्ग को चलाते हैं, तो यह पहले dataprovider को कॉल करेगा, जिसे समूहों की जानकारी नहीं मिल सकती क्योंकि समूह उपलब्ध नहीं हैं। लेकिन इसके बजाय यदि आप testng.xml के माध्यम से इस वर्ग को बुलाते हैं, तो इसके पास ITestContext के साथ समूह जानकारी उपलब्ध होगी। परीक्षण को कॉल करने के लिए निम्न XML का उपयोग करें

<सूट का नाम = "परीक्षण-पैरामीटर"><परीक्षण नाम = "उदाहरण 1"><समूह><रन><नाम = "ए" /> शामिल हैं<कक्षाएं><वर्गनाम = "पैरामीटर्स। व्यासमीटस्टेनेटेक्स्टइनडाटाप्रोइडर" /><परीक्षण नाम = "उदाहरण 2"><समूह><रन><नाम = "बी" /> शामिल हैं<कक्षाएं><वर्गनाम = "पैरामीटर्स। व्यासमीटस्टेनेटेक्स्टइनडाटाप्रोइडर" />

सारांश :

  • परिमाणीकरण के लिए डेटा ड्रिवेन टेस्टिंग बनाने की आवश्यकता होती है ।
  • TestNG दो प्रकार के मानकीकरण का समर्थन करता है, @ पैरामीटर + TestNG.xml और @DataProvider का उपयोग करके
  • में @ पैरामीटर + TestNG.xml मापदंडों सूट स्तर और परीक्षण के स्तर में रखा जा सकता है। अगर

    समान पैरामीटर नाम दोनों स्थानों में घोषित किया गया है; परीक्षण स्तर पैरामीटर को सूट स्तर पैरामीटर पर वरीयता मिलेगी।

  • @ Parameter + TestNG.xml का उपयोग करके एक समय में केवल एक मान सेट किया जा सकता है, लेकिन @DataProvider वस्तु का 2d सरणी लौटाता है ।
  • यदि DataProvider अलग-अलग वर्ग में मौजूद है, तो वह वर्ग जहाँ परीक्षण विधि रहती है, DataProvider स्थिर विधि होनी चाहिए ।
  • DataProvider द्वारा समर्थित दो पैरामीटर हैं Method और ITestContext।