how handle exception soapui groovy scripts soapui tutorial 11
इस SoapUI ट्यूटोरियल में, हम ग्रूवी स्क्रिप्टिंग का उपयोग करते हुए अपवाद को देखेंगे। ग्रूवी में हैंडलिंग रनटाइम अपवाद जावा के समान हैं क्योंकि जावा लाइब्रेरी एकीकृत हैं। हालांकि, हम SoapUI में बुनियादी अवधारणाओं पर चर्चा करेंगे और जावा में अपवाद से निपटने की गहराई में जाएंगे।
ये है SoapUI ट्यूटोरियल श्रृंखला में ट्यूटोरियल # 11 । यह SoapUI के मुफ्त संस्करण के लिए अंतिम ट्यूटोरियल है। इस श्रृंखला में कुछ और विषय शेष हैं जो SoapUI के प्रो फीचर्स, REST और SOAP सेवाओं, और SoapUI में डेटा संचालित परीक्षण पर हैं।
आइए अपवाद के संक्षिप्त परिचय के साथ शुरुआत करें:
अपवाद क्या है?
एक अपवाद एक प्रोग्राम के निष्पादन के दौरान आई एक त्रुटि है। यह कई कारणों से हो सकता है जैसे कि अमान्य डेटा, नेटवर्क कनेक्शन का नुकसान, खुली हुई फ़ाइलों की कोशिश करना, जो अनुपलब्ध हैं, अमान्य वर्ग तक पहुंच, मेमोरी लीकेज अर्थात सिस्टम को भारी मात्रा में डेटा के साथ काम करने के लिए मजबूर करना, डेटाबेस सर्वर अप्रतिसादी होना, आदि। ये त्रुटियां उपयोगकर्ताओं, डेवलपर्स या हार्डवेयर संसाधनों के कारण हो सकता है।
आंतरिक रूप से, जब निष्पादन के दौरान एक अपवाद का सामना करना पड़ता है, तो सोपुई हैंडलर को खोजने की कोशिश करेगा। हैंडलर वह ब्लॉक है जिसमें अपवाद को पकड़ने के लिए कोड होता है।
अपवादों को दो प्रकारों में वर्गीकृत किया गया है:
- क्रम अपवाद
- संकलन समय अपवाद - साबुन पर लागू नहीं है क्योंकि इसमें एक स्पष्ट संकलक नहीं है
निम्नलिखित स्क्रीनशॉट को देखें जो हमें अमान्य कोड के लिए रनटाइम अपवाद दिखाता है। नीचे दी गई स्क्रिप्ट में हमने एक पूर्णांक को विभाजित करने का प्रयास किया। 0. त्रुटि संवाद में यह देखा जा सकता है कि अपवाद जावा पुस्तकालयों से उठाया गया है और त्रुटि संदेश है शून्य से विभाजन ।
हम निष्पादन के दौरान इस अपवाद को पकड़ सकते हैं और इसे प्रोग्रामेटिक रूप से संभाल सकते हैं। इससे पहले, हम कुछ महत्वपूर्ण कीवर्ड देखेंगे जो जावा अपवाद अवधारणाओं में उपयोग किए जाते हैं। कुछ कीवर्ड ग्रूवी लिपि में भी उपयोग किए जा सकते हैं। वे:
- फेंकना - यह कीवर्ड हमें एक अपवाद को मैन्युअल रूप से फेंकने में मदद करता है यानी उपयोगकर्ता परिभाषित अपवादों को फेंकने के लिए
- फेंकता - इसका उपयोग विधि परिभाषा से पूर्व-परिभाषित अपवादों को कॉल करने के लिए किया जाता है। यदि निष्पादन के दौरान कोई रनटाइम त्रुटि पाई जाती है, तो यह अपवाद को पकड़ लेगा।
- प्रयत्न तथा पकड़ - 'प्रयास' कीवर्ड का उपयोग 'कैच' कीवर्ड के साथ किया जाता है। यदि हम उस कार्यक्रम के हिस्से की भविष्यवाणी कर सकते हैं जहां निष्पादन के दौरान अपवाद उत्पन्न हो सकता है, तो हम उस स्थान पर 'कोशिश' ब्लॉक का उपयोग कर सकते हैं। 'कोशिश' ब्लॉक के अंत में, 'पकड़' ब्लॉक को अपवाद को पकड़ना शुरू करना चाहिए। कैच ब्लॉक के अंदर, हमें अपवाद को संभालने के लिए हैंडलर लिखना होगा।
- आखिरकार - यह अपवाद संरचना में डिफ़ॉल्ट और वैकल्पिक ब्लॉक है। अगर हमें प्रोग्राम के अंत में किसी भी स्टेटमेंट को निष्पादित करने की आवश्यकता है, जैसे अप्रयुक्त वस्तुओं को साफ करना, कनेक्शन बंद करना आदि जो इस ब्लॉक के अंदर किए जा सकते हैं।
निम्नलिखित एक अपवाद की सामान्य संरचना है:
प्रयत्न
{{
}
catch
{
}
finally
{
}
Now let us implement the exception handler in the sample code which we have already seen in the screenshot.
Add new test suite under the GlobalWeather project. Then add a test case and groovy script test step under the test step. In the script editor, enter the following script.
// initializing the variables int a = 10; int b = 0; // try, catch block try { // Dividing a number by zero int c = a/b; log.info('Result :' + c); } catch(Exception expObj) { // Exception Handler log.info('You are trying to divide ' + a + ' by ' + b + '. This is not possible actually!'); }
उपरोक्त स्क्रिप्ट स्क्रीनशॉट में दिखाए अनुसार निम्न परिणाम तैयार करती है।
जैसा कि हमने पहले चर्चा की थी, हमने 'ए' 'बी' को विभाजित करने की कोशिश की जो शून्य है। इसलिए 'कैच' ब्लॉक निष्पादित हो जाता है और लॉग में उपयोगकर्ता द्वारा परिभाषित संदेश दिखाता है। देखें कि 'पकड़' कथन में, हमने उपयोग किया है अपवाद वर्ग जो सभी अंतर्निहित अपवादों के लिए जावा में सुपरक्लास है। सभी पूर्व-परिभाषित अपवाद वर्ग से विरासत में मिले हैं अपवाद कक्षा। अप्रत्याशित क्रम अपवादों को संभालने के लिए, हम उपयोग कर सकते हैं अपवाद 'पकड़' ब्लॉक में वर्ग।
आइए अब आवश्यक परिणाम प्राप्त करने के लिए उपरोक्त स्क्रिप्ट को संशोधित करें। निम्नलिखित स्क्रीनशॉट देखें:
आइए अब हम अपने नियमित वेब सेवाओं के परीक्षण में यह प्रयास करते हैं। निम्नलिखित स्क्रिप्ट में, हमने ट्राइ-कैच ब्लॉक का उपयोग नहीं किया, इसलिए हमें रनटाइम अपवाद मिलेगा।
// Initializing array with 5 elements String() countryNames = new String(5); // Assigning values to the array countryNames(0) = 'India'; countryNames(1) = 'Cyprus'; countryNames(2) = 'Canada'; countryNames(3) = 'Austria'; countryNames(4) = 'Mauritius'; // Iterate the array elements and assign value to the global property for(int idx=0; idx<=5; idx++) { com.eviware.soapui.SoapUI.globalProperties.setPropertyValue( 'CountryName', countryNames(idx)); def testStep = testRunner.testCase.testSteps('GetCitiesByCountry'); testStep.run(testRunner,context); log.info('Executed at ' + idx + ' times!'); }
उपरोक्त स्क्रिप्ट नामक एक अपवाद को फेंक देगा सीमा अपवाद के बाहर सरणी सूचकांक क्योंकि स्क्रिप्ट अमान्य एरे इंडेक्स यानी 5 को एक्सेस करने की कोशिश कर रही है जो उपलब्ध नहीं है।
(बढ़े हुए दृश्य के लिए छवि पर क्लिक करें)
जैसा कि आप उपरोक्त स्क्रिप्ट में देख सकते हैं, हमने पाँच के आकार के साथ 'देशनाम' सरणी को आरंभीकृत किया है। यह केवल पांच स्ट्रिंग वैल्यू यानी देश के नाम को स्वीकार करता है। पुनरावृत्तियों के अंदर, हमने जाँच की है आइडीएक्स<= 5 । तो लूप 6 गुना तक पुनरावृत्त होगा और यह 6 को खोजने का प्रयास करेगावेंएरे में तत्व। चूंकि मूल्य नहीं होगा, इसलिए यह एक रनटाइम अपवाद को फेंकता है।
सॉफ्टवेयर टेस्टिंग में ट्रैसेबिलिटी मैट्रिक्स क्या है
इस परिदृश्य को संभालने के लिए, नीचे दी गई स्क्रिप्ट को संशोधित करें:
String() countryNames = new String(5); // Try block try { countryNames(0) = 'India'; countryNames(1) = 'Cyprus'; countryNames(2) = 'Canada'; countryNames(3) = 'Austria'; countryNames(4) = 'Mauritius'; for(int idx=0; idx<=5; idx++) { com.eviware.soapui.SoapUI.globalProperties.setPropertyValue ( 'CountryName', countryNames(idx)); def testStep = testRunner.testCase.testSteps('GetCitiesByCountry'); testStep.run(testRunner,context); log.info('Executed at ' + idx + ' times!'); } } catch(Exception exp) // Catch the exception and displaying the message in the log { log.info('You are trying to access invalid array index. Please check and try again!'); }
यहाँ उपरोक्त लिपि का परिणाम है।
यह है कि हम अपने प्रोग्राम के निष्पादन के दौरान रनटाइम अपवाद को कैसे संभाल सकते हैं।
ध्यान दें: हम प्रयोग कर सकते हैं सीमा अपवाद के बाहर सरणी सूचकांक उपयोग करने के बजाय सीधे 'पकड़' ब्लॉक में अपवाद कक्षा। अगर हम सटीक अपवाद नाम 'पकड़' ब्लॉक में रखते हैं, तो यह केवल तभी पकड़ा जाएगा जब विशेष अपवाद फेंक दिया जाएगा। यदि किसी अन्य पूर्व-निर्धारित अपवाद को फेंक दिया जाता है, तो कैच ब्लॉक विफल हो जाएगा।
एक अच्छी स्वचालन स्क्रिप्ट में उचित अपवाद हैंडलर होना चाहिए। अन्यथा, निष्पादन के प्रत्येक क्षण की निगरानी करना मुश्किल होगा।
जैसा कि मैंने पहले उल्लेख किया है, ग्रूवी स्क्रिप्ट कॉलर को पूर्व-परिभाषित अपवाद को फेंकने के लिए 'फेंकता' कीवर्ड का समर्थन करती है।
इस अवधारणा को समझने के लिए नीचे दी गई नमूना स्क्रिप्ट देखें:
(तर्क / पैरामीटर) फेंकता
{{
}
उपरोक्त कंकाल के लिए नमूना कोड यहां दिया गया है।
// Invoke Method MethodWithThrowKeyword(); void MethodWithThrowKeyword() throws ArrayIndexOutOfBoundsException { String() countryNames = new String(5); countryNames(0) = 'India'; countryNames(1) = 'Cyprus'; countryNames(2) = 'Canada'; countryNames(3) = 'Austria'; countryNames(4) = 'Mauritius'; for(int idx=0; idx<=5; idx++) { log.info('Country Names: ' + countryNames(idx)); } }
उपरोक्त लिपि में, ए सीमा अपवाद के बाहर सरणी सूचकांक कहा जाता है समारोह में फेंक दिया जाएगा। वहां हमें कोशिश-पकड़ने वाले ब्लॉक के साथ ठीक से निपटने की आवश्यकता है। अन्यथा, एक अपवाद SoapUI द्वारा फेंक दिया जाएगा।
निष्कर्ष:
हमारी नियमित वेब सेवाओं से संबंधित परीक्षण स्क्रिप्ट में अपवाद हैंडलिंग को लागू करना, हमारे लिए कोड बनाए रखने और परीक्षकों के लिए मैनुअल हस्तक्षेप / निगरानी को कम करने में मददगार होगा। स्क्रिप्ट में आवश्यकता होने पर हम कई कोशिश-पकड़ ब्लॉकों का उपयोग कर सकते हैं।
अगला साबुन ट्यूटोरियल # 12: अगले ट्यूटोरियल में, हम SoapUI Pro संस्करण की अधिक जानकारी और सुविधाएँ प्रदान करेंगे।
इसलिए पढ़ते रहें। टिप्पणियाँ, प्रश्न, सुझाव हमेशा की तरह स्वागत है!
अनुशंसित पाठ
- प्रो ऑडियंस के लिए सोपुई प्रो की 4 महत्वपूर्ण विशेषताएं - सोपुई ट्यूटोरियल # 12
- SoapUI में मूल ग्रूवी लिपि को कैसे लिखें - SoapUi Tutorial # 6
- SoapUI Groovy Script में गुणों का उपयोग कैसे करें - SoapUI Tutorial # 7
- फाइल में स्टोर रिक्वेस्ट और रिस्पांस डेटा के लिए एक त्वरित साबुन गाइड - साबुनापी ट्यूटोरियल # 15
- 15+ साबुन ट्यूटोरियल: सर्वश्रेष्ठ वेब सेवा एपीआई परीक्षण उपकरण
- उन्नत सोपीयू ग्रूवी स्क्रिप्टिंग अवधारणाओं को जानें - सोपुई ट्यूटोरियल # 9
- शुरुआती के लिए गहराई से ग्रहण ट्यूटोरियल
- SoapUI Pro में ट्यूटोरियल कैसे बनाएँ: ट्यूटोरियल # 13