learn advanced soapui groovy scripting concepts soapui tutorial 9
पिछले SoapUI ट्यूटोरियल्स SoapUI और इसकी प्रोग्रामिंग अवधारणाओं में एक परिचय रहे हैं। हम अब से अधिक उन्नत ग्रूवी स्क्रिप्टिंग अवधारणाओं में आगे बढ़ेंगे। हमारे साथ यह हो रहा है सशर्त प्रवाह बयान - दोनों बूलियन और पुनरावृत्त बयान। फिर हम सरणियों के संग्रह पर आगे बढ़ेंगे।
यह हमारे में 9 वां ट्यूटोरियल है साबुन ट्यूटोरियल श्रृंखला ।
निष्पादन के प्रवाह को नियंत्रित करने के लिए सशर्त बयानों का उपयोग किया जाता है। यहाँ ग्रूवी में विभिन्न प्रकार के सशर्त वक्तव्य दिए गए हैं।
आप क्या सीखेंगे:
- # 1 नियंत्रण या तार्किक कथन:
- # २। लूपिंग या Iterative कथन:
- # ३। संग्रह संग्रह:
- निष्कर्ष
- अनुशंसित पाठ
# 1 नियंत्रण या तार्किक कथन:
ये कथन तार्किक स्थितियों के आधार पर सही या गलत साबित होते हैं। वे AND, OR और NOT हैं। उपयोग किए गए प्रतीक symbols && (और) ’,’ | ’| तथा '! (विस्मयादिबोधक) क्रमशः व्यवहार सत्य तालिका में वर्णित है:
'और' ऑपरेटर सत्य तालिका:
'या ऑपरेटर सच्चाई तालिका:
निषेध उद्देश्य के लिए 'नहीं' ऑपरेटर
सशर्त बयान: प्रोग्रामिंग भाषाएं निम्नलिखित सशर्त बयानों का समर्थन करती हैं:
- अगर ... और बयान
- अगर ... और अगर ... और बयान
- टर्नरी ऑपरेटर
- स्विच स्टेटमेंट
ए) यदि ... और सिंटैक्स ब्लॉक करें:
अगर
{{
}
अन्य
{{
}
इस वाक्यविन्यास में, जब दिए गए कथन को सत्य मान लिया जाएगा, तो निष्पादित हो जाएगा। यदि ब्लॉक में एक से अधिक रेखाएं हैं, तो हमें घुंघराले ब्रेसिज़ द्वारा बयानों को संलग्न करना होगा। यह निर्देश देता है कि पूरे ब्लॉक को शर्त के आधार पर निष्पादित करना चाहिए।
उदाहरण कोड स्निपेट देखें।
int a=100 int b=200 if (a>b) { log.info('B is greater than A'); } else { log.info('A is greater or both are equal'); }
एक यदि नहीं तो… स्टेटमेंट में केवल एक ईएलएसई ब्लॉक होना चाहिए।
बी) एकाधिक सशर्त ब्लॉक: अगर ... और अगर ... और सिंटैक्स
अगर
{{
}
और अगर
{{
}
अन्य
{{
}
अगर ... और अगर ... और बयान की तुलना में थोड़ा अलग है यदि नहीं तो… कथन- उसके संदर्भ में और अगर खंड मैथा। इस ब्लॉक का उपयोग कई शर्तों को जोड़ने के लिए किया जाता है। निम्नलिखित उदाहरण देखें।
int a=100 int b=200 int c=300 if (a>b && a>c) { log.info('A is greater than B and C'); } else if (b>a && b>c) { log.info('B is greater than A and C'); } else { log.info('C is greater than A and B or All are equal numbers'); }
और उपरोक्त स्क्रिप्ट के लिए आउटपुट स्क्रीनशॉट देखें: इसके अलावा, बूलेन ऑपरेटर उदाहरण के लिए संदर्भ के रूप में भी इसका उपयोग करें:
ग) सहायक ऑपरेटर:
यह ऑपरेटर के समान काम करता है यदि नहीं तो बयान। इसमें FALSE / डिफ़ॉल्ट स्टेटमेंट्स के लिए दो ऑपरेंड्स जैसे प्रश्न चिह्न (TRUE) और कोलन है।
डी ए = १००
डी बी = (ए> 100) ? 'सफल - असफल'
log.info (B)
यहाँ उपरोक्त स्क्रिप्ट के लिए स्क्रीनशॉट है।
डी) स्विच मामला: यह कथन विभिन्न मूल्यों के साथ कई सशर्त शाखाओं की अनुमति देता है। साथ ही यह क्लास ऑब्जेक्ट रेफरेंस, रेग्युलर एक्सप्रेशंस, कलेक्शन जैसे एरे, लिस्ट आदि की तुलना का समर्थन करता है।
स्विच
{{
मामला :
;
टूटना;
मामला :
;
टूटना;
चूक:
;
}
मामला कथनों की तुलना मूल्यों के साथ की जाती है स्विच मामला मूल्य। यदि यह मेल खाता है, तो संबंधित केस ब्लॉक निष्पादित हो जाता है। एक बार जब ब्लॉक निष्पादित हो जाता है तो इसे 'ब्रेक' कीवर्ड द्वारा रोक दिया जाना चाहिए। यदि हम केस स्टेटमेंट के अंत में 'ब्रेक' कीवर्ड से चूक गए हैं, तो निष्पादन अगले केस स्टेटमेंट में चला जाएगा- और यह आवश्यक नहीं हो सकता है। मामले में कोई भी मामला सही नहीं है, चूक ब्लॉक निष्पादित किया जाएगा। कृपया ध्यान दें कि ग्रूवी सभी प्रमुख ऑपरेटरों और खोजशब्दों का समर्थन करता है क्योंकि यह जावा पुस्तकालयों के साथ शामिल है।
def country='India' switch(country) { case 'Japan': log.info('Country matched with 1st case statement'); break; case 'Australia': log.info('Country matched with 2st case statement'); break; case 'India': log.info('Country matched with 3st case statement'); break; default: log.info('None of the matches available :('); }
Here’s the output screenshot for the above script.
# २। लूपिंग या Iterative कथन:
जब भी हमें आवश्यकता होती है ये पुनरावृत्ति को सक्षम करते हैं और डेटा संचालित परीक्षण के लिए विशेष रूप से उपयोगी होते हैं।
उदाहरण के लिए, मान लें कि हमारे पास एक्सेल फ़ाइल में कुछ ज़िप कोड हैं। एक्सेल फ़ाइल से एक-एक करके सभी ज़िप कोड प्राप्त करने के लिए, और इसे सेवा में पास करें अर्थात्। GetSuppliersZipcode , हम पुनरावृत्तियों का उपयोग कर सकते हैं। SoapUI डेटा स्रोत और डेटा स्रोत लूप टेस्ट स्टेप्स नामक एक वैकल्पिक सुविधा भी प्रदान करता है। (केवल SoapUI प्रो परीक्षण और लाइसेंस प्राप्त संस्करणों में उपलब्ध है।)
हम इन निम्नलिखित पुनरावृत्तियों का उपयोग ग्रूवी लिपि में कर सकते हैं:
- पाश के लिए
- घुमाव के दौरान
पाश के लिए:
के लिये (; ; )
{{
;
}
उपरोक्त सिंटैक्स में, आरंभीकरण लूप के प्रारंभिक बिंदु को दर्शाता है और स्थिति के आधार पर लूप जारी रहेगा या निष्पादन को रोक देगा।
नीचे की स्क्रिप्ट देखें
for (int i = 1; i;<=10; i++)
{{
log.info (.in लूप Iterated i + i + ’टाइम्स’);
}
उपरोक्त स्क्रिप्ट निम्न स्क्रीनशॉट में दिखाए गए अनुसार परिणाम देगा।
अब हम अपनी वास्तविक परीक्षण दुनिया में नियंत्रण कथन और पुनरावृति कथन का उपयोग करते हैं। नीचे दिए गए चरणों का पालन करें:
- अपने इच्छित नाम के साथ टेस्टकेस जोड़ें। मैंने 'T9_GetSupplierByZipCode_TestCase' बनाया है।
- फिर 'Property_Zipcode' नामक एक संपत्ति जोड़ें
- 'GetSupplierByZipCode' सेवा के लिए टेस्ट अनुरोध चरण जोड़ें और स्क्रीनशॉट में दिखाए अनुसार अनुरोध में संपत्ति का नाम डालें।
निम्न स्क्रीनशॉट में दिखाए गए अनुसार ग्रूवी स्क्रिप्ट परीक्षण चरण जोड़ें।
चौड़ाई पहली खोज c ++
ग्रूवी स्क्रिप्ट एडिटर में, निम्न स्क्रिप्ट लिखें।
for (int zipCode=1; zipCode5) { log.info('**************Stopped Execution*************'); break; } testStep.run(testRunner,context); log.info('Executed ' + zipCode + ' times') }
निम्न परिणाम लॉग में और साथ ही सेवा प्रतिक्रिया स्क्रीन में प्राप्त होता है।
(बढ़े हुए दृश्य के लिए छवि पर क्लिक करें)
'घुमाव के दौरान:
वाक्य - विन्यास:
जबकि
{{
;
}
उपरोक्त तर्क 'जबकि' लूप का उपयोग करके भी लागू किया जा सकता है।
इसलिए, सार यह है कि पुनरावृत्त कथन का उपयोग किया जा सकता है:
- परीक्षण मामलों या परीक्षण चरणों को बार-बार निष्पादित करें
- नियंत्रण कथनों के माध्यम से निष्पादन के प्रवाह को नियंत्रित करें।
# ३। संग्रह संग्रह:
सरणी संग्रह किसी एकल चर या ऑब्जेक्ट में कई मानों को संग्रहीत करने में मदद करता है। ऐरे इंडेक्स डिफ़ॉल्ट रूप से शून्य पर शुरू होता है और हमें एरे नाम के साथ उस इंडेक्स का उपयोग करने की आवश्यकता होती है, जो एरे में संग्रहीत मूल्य को एक्सेस करने के लिए है। ग्रंथावली लिपि में सरणियों की घोषणा करने के लिए सिंटैक्स:
arrayName = नई वस्तु (5) या,
arrayName = नई वस्तु (10) () या,
arrayName = नई वस्तु (10) (10) ()
ध्यान दें : सरणियों की घोषणा करते समय हमें प्रारंभिक आकार निर्दिष्ट करना होगा अन्यथा यह एक संकलन त्रुटि को फेंक देगा। यहाँ एकल आयामी सरणी के लिए सरल उदाहरण है।
ArrayObj = नई वस्तु (5);
ArrayObj (0) = 'टेस्टकेस 1';
ArrayObj (1) = 'टेस्टकेस 2';
ArrayObj (2) = 'टेस्टकेस 3';
ArrayObj (3) = 'टेस्टकेस 4';
ArrayObj (4) = 'टेस्टकेस 5';
अब हम इसे अपने नियमित परीक्षण चरणों में लागू करते हैं। इसलिए प्रोजेक्ट परीक्षण सूट के तहत संपत्ति, परीक्षण अनुरोध और स्क्रिप्ट परीक्षण कदम जोड़ें जैसा कि निम्नलिखित स्क्रीनशॉट में दिखाया गया है।
और फिर स्क्रिप्ट टेस्ट स्टेप पर डबल क्लिक करें और निम्नलिखित स्क्रिप्ट लिखें।
def MAX_LIMIT = 5 def zipCodes = new Object(MAX_LIMIT) zipCodes(0) = '92704' zipCodes(1) = '99362' zipCodes(2) = '31401' zipCodes(3) = '90247' zipCodes(4) = '87102' int i=0; while (i<5) { if (i<5) { testRunner.testCase.testSteps('Properties'). setPropertyValue('Property_Zipcode',zipCodes(i)); def testStep = testRunner.testCase.testSteps('GetSupplierByZipCode'); testStep.run(testRunner,context); log.info('Loop executed ' + i + ' times'); } i++; } log.info('Testcase execution is completed....');
In this script, we initialized array object as 5 and assigned five zip codes in each array location respectively. Next part of the script is iterative block. Here we iterate the loop up to 5 times. Each time array value will be assigned to the property and then move to GetSupplierByZipCode web service to pass this array value in the request. After that, service step will be executed with the zip code. Finally we will get the following message in the log as shown in the screenshot.
इसलिए विभिन्न प्रकारों के साथ कई तत्वों को संभालने के लिए सरणियाँ बहुत उपयोगी हैं। अधिक अभ्यास बेहतर समझ और उपयोग में आसानी को बढ़ावा देगा।
निष्कर्ष
यह सशर्त या तार्किक ब्लॉकों के उदाहरणों के साथ एक समग्र परिचय था, जिसमें IF… ELSE, स्विच और टर्नेरी स्टेटमेंट शामिल हैं। ये कथन तार्किक ऑपरेटरों जैसे AND, OR, NOT द्वारा नियंत्रित होते हैं। जब 'स्विच' ब्लॉक की तुलना में 'यदि' ब्लॉक तेज और सरल है। परीक्षण प्रक्रिया को व्यवस्थित करने के लिए सरणियों जैसे कई संग्रहों को संभालने के लिए, लूप स्टेटमेंट महत्वपूर्ण हैं।
अगला SoapUI ट्यूटोरियल # 10 : अगली पोस्ट में हम 'ऑब्जेक्ट ओरिएंटेड ग्रूवी स्क्रिप्टिंग इन सोपुई' सीखेंगे।
अगले साबुन ग्रूवी स्क्रिप्ट ट्यूटोरियल में अधिक उपयोगी अवधारणाएं आ रही हैं। पढ़ते रहिए और कृपया नीचे दिए गए टिप्पणियों में अपने अनुभव और प्रश्नों को साझा करें।
अनुशंसित पाठ
- SoapUI Groovy लिपियों में अपवाद को कैसे हैंडल करें - SoapUI Tutorial # 11
- SoapUI में मूल ग्रूवी लिपि को कैसे लिखें - SoapUi Tutorial # 6
- SoapUI Groovy Script में गुणों का उपयोग कैसे करें - SoapUI Tutorial # 7
- शुरुआती के लिए गहराई से ग्रहण ट्यूटोरियल
- प्रो ऑडियंस के लिए सोपुई प्रो की 4 महत्वपूर्ण विशेषताएं - सोपुई ट्यूटोरियल # 12
- 15+ साबुन ट्यूटोरियल: सर्वश्रेष्ठ वेब सेवा एपीआई परीक्षण उपकरण
- सोपुई डाउनलोड और इंस्टॉलेशन प्रक्रिया द्वारा चरण - सोपीयू ट्यूटोरियल # 3
- एक त्वरित SoapUI गाइड एक फ़ाइल में स्टोर अनुरोध और प्रतिक्रिया डेटा - SoapUI ट्यूटोरियल # 15