learn how use testng annotations selenium
TestNG, जैसा कि आप में से अधिकांश जानते हैं, एक स्वचालन है सेलेनियम में व्यापक रूप से उपयोग किया जाने वाला ढांचा । TestNG के साथ काम करते समय उपयोग किए जाने वाले एनोटेशन को समझना सभी परीक्षकों के लिए महत्वपूर्ण है।
इसे सरलता से कहने के लिए, TestNG एनोटेशन कोड की पंक्तियाँ हैं जिन्हें प्रोग्राम / व्यावसायिक तर्क में डाला जाता है ताकि यह नियंत्रित किया जा सके कि नीचे दी गई विधियों को कैसे चलाया जाए।
इस लेख में, मैं विभिन्न प्रकार के एनोटेशन के महत्व और उनके उपयोग पर ध्यान केंद्रित करने जा रहा हूं।
नीचे, मैंने अपने प्रोजेक्ट के लिए उपयोग किए गए सेट को साझा किया है। यह जरूरी नहीं कि आपके प्रोजेक्ट के लिए जरूरी हो।
एनोटेशन आपकी प्रोजेक्ट आवश्यकताओं के आधार पर भिन्न होते हैं। हालांकि, निष्पादन का प्रवाह समान होगा।
आवश्यक शर्तें:
- ग्रहण में TestNG स्थापित करें। जाँच स्थापना गाइड पर इस ट्यूटोरियल ।
- JDK - जावा डेवलपमेंट किट
- एनोटेशन का उपयोग केवल जावा 1.5 संस्करण या उच्चतर के साथ किया जा सकता है
परीक्षण स्क्रिप्ट लिखने या एक परियोजना स्थापित करने से पहले, हमें उस पदानुक्रम को जानना चाहिए जिसमें एनोटेशन काम करते हैं। अमल हमेशा एक जैसा रहेगा।
उदाहरण के लिए, संकलन करें और नीचे दी गई स्क्रिप्ट को चलाएं और निष्पादन आदेश पर ध्यान दें। यह निम्नानुसार होगा:
- पहले से देखें
- सबसे पहले
- कक्षा से पहले
- इससे पहले मैथोड
- टेस्ट केस 1
- बादमेठोड
- इससे पहले मैथोड
- टेस्ट केस 2
- बादमेठोड
- क्लास के बाद
- बाद में
- AfterSuite
उदाहरण:
public class test { @BeforeMethod public void beforeMethod() { System.out.println(' Before Method will execute before every test method'); } @AfterMethod public void afterMethod() { System.out.println('After Method will execute after every test method '); } @BeforeClass public void beforeClass() { System.out.println('Before Class will always execute prior to Before Method and Test Method '); } @AfterClass public void afterClass() { System.out.println('After Class will always execute later to After Method and Test method'); } @BeforeTest public void beforeTest() { System.out.println('Before Test will always execute prior to Before Class, ,Before Method and Test Method '); } @AfterTest public void afterTest() { System.out.println('After Test will always execute later to After Method, After Class '); } @BeforeSuite public void beforeSuite() { System.out.println(“Before Suite will always execute prior to all annotations or tests in the suite.'); } @AfterSuite public void afterSuite() { System.out.println('After suite will always execute at last when all the annotations or test in the suite have run.'); } @Test public void testCase1() { System.out.println('This is my First Test Case 1'); } @Test public void testCase2() { System.out.println('This is my Second Test Case 2'); } }
हम नीचे दिए गए चरणों में परीक्षण स्क्रिप्ट प्रक्रिया को तोड़ सकते हैं:
- अपने परीक्षण का व्यावसायिक तर्क लिखें और ऊपर डालें TestNG एनोटेशन आपके कोड में
- अपने परीक्षण के बारे में जानकारी जोड़ें (जैसे कि वर्ग का नाम, समूह, आपके द्वारा चलाने की इच्छा, आदि) a testng.xml फ़ाइल।
- TestNG चलाएं
लेकिन सवाल अभी भी बना हुआ है - उपरोक्त टिप्पणियों में हमें क्या जानकारी प्रदान करनी चाहिए?
उपरोक्त एनोटेशन का उपयोग करके हम उन महत्वपूर्ण चरणों पर एक नज़र डाल सकते हैं:
# 1) @परीक्षा
यह हमारी स्वचालन स्क्रिप्ट का मुख्य भाग है जहां हम व्यावसायिक तर्क लिखेंगे, जिन चीजों को हम स्वचालित करना चाहते हैं। हम अपनी परीक्षा पद्धति के लिए विशेषताएँ पास कर सकते हैं।
नीचे उन विशेषताओं की सूची दी गई है, जिन्हें हम अपने परीक्षण विधि में पास कर सकते हैं:
- हमेशा दौड़ें : इसका उपयोग तब किया जाता है जब हम यह सुनिश्चित करना चाहते हैं कि एक विधि हमेशा चलती है भले ही जिस पर विधि निर्भर करती है, विफल हो जाती है। यदि यह सच है, तो यह परीक्षण विधि हमेशा चलेगी। जैसे: @ टेस्ट (हमेशा सही = सत्य)
- डेटा प्रदाता : TestNG dataProvider का उपयोग पैरामीटरेशन के लिए कोई भी डेटा प्रदान करने के लिए किया जाता है। जैसे। @ टेस्ट (डेटाप्रोवाइडर = 'हैलो')।
- dataProviderClass : यह वह वर्ग है जहां से हम डेटा प्रदाता को डेटा पास करते हैं। हमारे मामले में डेटाप्रॉइडर वर्ग का नाम 'हैलो' है।
- OnOnGroup : यह उन समूहों की सूची है जो इस पद्धति पर निर्भर करते हैं। जैसे: @ टेस्ट (समूह = {'शहर', 'राज्य'})
- निर्भरऑनमेथोड्स: इस कमांड का उपयोग इसके आश्रित विधि के आधार पर एक विधि को निष्पादित करने के लिए किया जाता है। जैसे: @ टेस्ट (निर्भरतामेथोड्स = {'ओपनब्रोसर', 'डेटाबेस ऊपर है'})
- विवरण : यह विधि के लिए विवरण है। जैसे: @ टेस्ट (विवरण = 'परीक्षण विधि')
- मंगलाचरण : यह किसी विधि को लागू करने की संख्या को संदर्भित करता है। यह लूप की तरह काम करेगा। जैसे: @ टेस्ट (इंवोकेशनकाउंट = 7) । इसलिए, यह विधि 7 बार निष्पादित होगी।
- मंगलाचरण : यह अधिकतम संख्या में मिलीसेकंड को संदर्भित करता है जिसे पूरा करने के लिए सभी आह्वान के लिए एक विधि लेनी चाहिए। इस विशेषता को अनदेखा कर दिया जाएगा यदि मंगलाचरण निर्दिष्ट नहीं है। जैसे: @ टेस्ट (इन्वोकेशनकाउंट = 7, इनवोकेशन टाइमऑउट = 30)
- वरीयता : यह आदेश परीक्षण विधि की प्राथमिकता निर्धारित करता है। निचली प्राथमिकताओं को पहले निर्धारित किया जाएगा। जैसे: @ टेस्ट (प्राथमिकता = 1)
#दो)@BeforeSuite और @AfterSuite
में @BeforeSuite एनोटेट विधि, आप सेटअप और शुरू कर सकते हैं सेलेनियम ड्राइवरों और में @ आफ्टरसाइट एनोटेट विधि, आप सेलेनियम ड्राइवरों को रोक सकते हैं
उदाहरण :
public class TestSuiteSetup () { @BeforeSuite(alwaysRun = true) public void setupSuite() { WebDriver driver = new FirefoxDriver(); } @AfterSuite(alwaysRun = true) public void tearDown() { driver().close(); } }
# 3)@BeforeClass और @AfterClass
में @कक्षा से पहले एनोटेट विधि, आप अपने फ़ायरफ़ॉक्स गुणों को सेटअप कर सकते हैं, अपने ड्राइवर और इतने पर इनिशियलाइज़ कर सकते हैं @क्लास के बाद एनोटेट विधि, आप ड्राइवर को रोक सकते हैं
उदाहरण :
@BeforeClass(description = 'Set capabilities for your Firefox browser and set time it should wait for a page to load.') public static void firefoxSetUp() throws MalformedURLException { DesiredCapabilities capability = DesiredCapabilities.firefox(); driver = new FirefoxDriver(capability); driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS); driver.manage().window().setSize(new Dimension(1920, 1080)); } @AfterClass(description = 'close your firefox driver') public void afterclass(){ driver.close(); }
# 4)@BeforeMethod और @AfterMethod
में @BeforeMethod एनोटेट विधि, आप अपने परीक्षण विधि को निष्पादित करने से पहले डेटाबेस कनेक्शन की जांच कर सकते हैं @ आफ्टरमेथोड एनोटेट विधि, आप अपना डेटा बेस कनेक्शन बंद कर सकते हैं
उदाहरण :
@BeforeMethod(description='connect to database') public void beforemethod() throws SQLException{ //check database connection is up String databaseurl = 'jdbc:oracle://192.168.1.258/myDB'; DriverManager.getConnection(databaseurl, 'username', 'password'); }
@AfterMethod(description='close database connection') public void aftermethod() throws SQLException{ //check database connection is closed String databaseurl = 'jdbc:oracle://192.168.1.258/myDB'; Connection connect = DriverManager.getConnection(databaseurl, 'username', 'password'); if(connect!=null) connect.close(); }
# 5)@BeforeTest और @AfterTest
में @BeforTest विधि, आप अपने फ़ायरफ़ॉक्स प्रोफ़ाइल वरीयताओं और में सेट कर सकते हैं @ बाद में विधि, आप कुछ कोड डाल सकते हैं जो परीक्षा परिणाम उत्पन्न करेगा और इसे हितधारकों को मेल करेगा
उदाहरण :
@BeforeTest (description='set your firefox profile preferences according to your project requirement') public void single_run(){ FirefoxProfile firefoxProfile = new FirefoxProfile(); firefoxProfile.setPreference ('browser.download.folderList',2); firefoxProfile.setPreference ('browser.download.manager.showWhenStarting',false); firefoxProfile.setPreference ('browser.download.dir','E:\reports\'); firefoxProfile.setPreference ('browser.helperApps.neverAsk.saveToDisk','csv'); driver = new FirefoxDriver(firefoxProfile); String baseUrl = 'www.gmail.com'; } @AfterTest (description='') public void teardown(){ //a code which will send the test details report }
एनोटेशन के साथ काम करते समय यहां सबसे महत्वपूर्ण पहलू यह ध्यान दिया जाना चाहिए कि आपका सिस्टम जावा 1.5 संस्करण या उच्चतर से सुसज्जित होना चाहिए, अन्यथा एक्लिप्स एक त्रुटि दिखा सकता है कि एनोटेशन आपके सिस्टम पर समर्थित नहीं हैं।
अब, ऐसे मामले पर विचार करें जहां आपके सिस्टम में एनोटेशन के लिए जावा का सही संस्करण आवश्यक है लेकिन त्रुटि अभी भी दिखाई देती है।
नीचे कुछ इस तरह है:
सिंटैक्स त्रुटि, एनोटेशन केवल उपलब्ध हैं यदि स्रोत स्तर 1.5 या अधिक है।
आप अब क्या करेंगे? वहां इस स्थिति को सुधारने के लिए तीन विकल्प।
इसे एक-एक करके देखें:
विकल्प 1:
- ग्रहण पर जाएं और अपनी परियोजना पर राइट क्लिक करें
- गुण का चयन करें
- Java Compiler पर क्लिक करें
- सुनिश्चित करें कि आपका कंपाइलर कंप्लायंस स्तर 1.5 या अधिक है
- सेटिंग्स को सहेजें और आपकी समस्या हल हो गई है
विकल्प 2:
- ग्रहण में विंडो टैब पर जाएं
- प्राथमिकताएँ चुनें
- Java और फिर Compiler पर क्लिक करें
- सुनिश्चित करें कि आपका कंपाइलर कंप्लायंस स्तर 1.5 या अधिक है
- सेटिंग्स को सहेजें और आपकी समस्या हल हो गई है
विकल्प # 3:
सही जावा वातावरण पथ चर सेट करके अपने जावा होम पथ की जाँच करें।
निष्कर्ष:
इस लेख के माध्यम से, हमने कुछ महत्वपूर्ण एनोटेशन और विशेषताओं पर चर्चा करने की कोशिश की, जो अक्सर परीक्षकों द्वारा उपयोग की जाती हैं। हालाँकि, TestNG में अधिक एनोटेशन हैं जो अक्सर उपयोग नहीं किए जाते हैं जैसे कि @AfterGroups, @BeforeGroups और इस तरह से जब आप अपनी परियोजना परीक्षण स्क्रिप्ट में समूहों के साथ काम कर रहे हैं तो इसका उपयोग किया जाता है।
इसलिए अपनी आवश्यकताओं के अनुसार उपरोक्त एनोटेशन का उपयोग करें। यह हमेशा सलाह दी जाती है कि परीक्षण पद्धति में अपना प्रोजेक्ट सेटअप न करें। परीक्षण विधि में मुख्य व्यवसाय तर्क को लिखें जिसे परीक्षण किया जाना है।
कैसे .bin फ़ाइल विंडोज़ 10 को खोलें
सुनिश्चित करें कि आपका सिस्टम जावा 1.5 संस्करणों या उच्चतर से सुसज्जित है, अन्यथा ग्रहण एक त्रुटि दिखा सकता है कि एनोटेशन आपके सिस्टम पर समर्थित नहीं हैं।
आशा है कि यह लेख आपको TestNG एनोटेशन के साथ मदद करता है। कृपया हमें किसी भी टिप्पणी या प्रश्नों के मामले में बताएं।
अनुशंसित पाठ
- सेलेनियम लिपियों के निर्माण के लिए TestNG फ्रेमवर्क का उपयोग कैसे करें - TestNG सेलेनियम ट्यूटोरियल # 12
- सेलेनियम उदाहरणों के साथ पाठ ट्यूटोरियल द्वारा तत्व का पता लगाएं
- 30+ सर्वश्रेष्ठ सेलेनियम ट्यूटोरियल: वास्तविक उदाहरणों के साथ सेलेनियम सीखें
- ककड़ी सेलेनियम ट्यूटोरियल: ककड़ी जावा सेलेनियम वेबड्राइवर एकीकरण
- सेलेनियम वेबड्राइवर का परिचय - सेलेनियम ट्यूटोरियल # 8
- कुशल सेलेनियम स्क्रिप्टिंग और समस्या निवारण परिदृश्य - सेलेनियम ट्यूटोरियल # 27
- लॉग (लॉग 4j ट्यूटोरियल) के साथ सेलेनियम लिपियों को डीबग करना - सेलेनियम ट्यूटोरियल # 26
- उदाहरणों के साथ पायथन डेटटाइम ट्यूटोरियल