उदाहरण के साथ सरू में स्टेप बाय स्टेप पेज ऑब्जेक्ट मॉडल

पेज ऑब्जेक्ट मॉडल, साधारणतया जाना जाता है पोम, किसी भी स्वचालन ढांचे में एक लोकप्रिय पैटर्न है। पेज ऑब्जेक्ट मॉडल को सरू में भी लागू किया जा सकता है। परीक्षण स्वचालन के लिए एक ढांचा बनाने में पेज ऑब्जेक्ट मॉडल के कई फायदे हैं, जैसे कोड दोहराव को कम करना और रखरखाव और पठनीयता बढ़ाना। सरू हमें परीक्षण स्क्रिप्ट में पेज ऑब्जेक्ट मॉडल को शामिल करने की सुविधा प्रदान करता है। इस लेख में, हम एक पेज ऑब्जेक्ट मॉडल बनाने पर विचार करेंगे सरू कदम उदाहरण के साथ कदम से कदम।

सामग्री की तालिका:

सरू पृष्ठ वस्तु मॉडल
सरू पेज ऑब्जेक्ट मॉडल

पेज ऑब्जेक्ट मॉडल क्या है?

पेज ऑब्जेक्ट मॉडल एक डिज़ाइन पैटर्न है जहाँ पेज ऑब्जेक्ट्स को ऑटोमेशन टेस्ट स्क्रिप्ट से अलग किया जाता है। स्वचालन परीक्षण हमें कई लाभ देता है जो हमें परीक्षण में लाभान्वित करता है; हालाँकि, कुछ परिणाम हैं जैसे कोड दोहराव और परियोजना के बढ़ने के साथ-साथ रखरखाव के जोखिम में वृद्धि। आइए एक उदाहरण से पोम के महत्व को समझते हैं।

विचार करें कि हमारे एप्लिकेशन में लॉग इन पेज, रजिस्ट्रेशन पेज और बुक फ्लाइट पेज जैसे कई पेज हैं।

  • लॉग इन पेज में लॉगिन कार्यात्मकता के सभी वेब तत्व शामिल हैं
  • पंजीकरण में पंजीकरण प्रक्रिया के सभी तरीके और वेब तत्व शामिल हैं
  • बुक फ़्लाइट में फ़्लाइट बुकिंग पेज के वेब तत्व होते हैं

तीन परीक्षण मामले हैं, अर्थात् TC1, TC2, और TC3।

  • TC1 में लॉगिन परीक्षण मामले शामिल हैं।
  • TC2 में लॉगिन और पंजीकरण परीक्षण मामले शामिल हैं
  • TC3 में लॉगिन, पंजीकरण और उड़ान बुकिंग परीक्षण मामले शामिल हैं
फ़्लाइट बुक करना
पोम के बिना उदाहरण

अब, लॉगिन पेज TC1 के साथ इंटरैक्ट करता है।

पंजीकरण पृष्ठ को TC1 और TC2 के साथ सहभागिता करने की आवश्यकता है, और

उड़ान बुकिंग पृष्ठ को TC1, TC2, और TC3 के साथ सहभागिता करने की आवश्यकता है

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

कोडिंग में सर्वोत्तम प्रथाओं में से एक अवधारणा है जिसे कहा जाता है सूखी। इसका मतलब अपने आप को दोहराओ मत. जैसा कि फुल फॉर्म में साफ साफ लिखा है, हमें कोड की पंक्तियों को बार-बार नहीं दोहराना चाहिए। इस पर काबू पाने के लिए, पेज ऑब्जेक्ट मॉडल सर्वोत्तम कोडिंग प्रथाओं में एक महत्वपूर्ण भूमिका निभाता है।

पेज ऑब्जेक्ट मॉडल फ्रेमवर्क आर्किटेक्चर

RSI पेज ऑब्जेक्ट मॉडल फ्रेमवर्क वास्तुकला एक सिद्ध वास्तुकला है जिसे सरल तरीकों से अनुकूलित किया जा सकता है। आज, लगभग सभी कंपनियां चुस्त कार्यप्रणाली का पालन करती हैं, जिसमें निरंतर एकीकरण, विकास और परीक्षण शामिल है। स्वचालन परीक्षक विकास प्रक्रिया के साथ काम करने के लिए परीक्षण ढांचे को बनाए रखते हैं पेज ऑब्जेक्ट मॉडल. यह एक महत्वपूर्ण है स्वचालन परीक्षण ढांचे को बनाए रखने में डिजाइन पैटर्न जैसे-जैसे कोड नई सुविधाओं के साथ बढ़ता है।

पेज ऑब्जेक्ट एक डिज़ाइन पैटर्न है जो एक ऑब्जेक्ट-ओरिएंटेड क्लास है जो हमारे द्वारा परीक्षण किए जा रहे एप्लिकेशन के पेजों के साथ इंटरैक्ट करता है. पेज ऑब्जेक्ट में शामिल हैं पेज क्लास और टेस्ट केसपेज क्लास वेब तत्वों के साथ बातचीत करने के तरीके और लोकेटर शामिल हैं। हम एप्लिकेशन में प्रत्येक पृष्ठ के लिए अलग-अलग कक्षाएं बनाते हैं। हम प्रत्येक कार्यक्षमता के लिए अलग-अलग तरीके बनाएंगे और उन्हें अपनी विशिष्ट फ़ाइल में एक्सेस करेंगे।

पेज क्लास
पेज ऑब्जेक्ट मॉडल

सरू में पेज ऑब्जेक्ट मॉडल का उपयोग करने के लाभ

  1. तरीके हैं पुन: प्रयोज्य पूरी परियोजना में और परियोजना के बढ़ने पर बनाए रखने में आसान। कोड की लाइनें बन जाती हैं कम पठनीय और अनुकूलित।
  2. पेज ऑब्जेक्ट पैटर्न से पता चलता है कि हम अलग करते हैं संचालन और प्रवाह कि हम UI से प्रदर्शन कर रहे हैं सत्यापन कदम। जब हम पोम पैटर्न का पालन करते हैं, तो हम लिखने की प्रवृत्ति रखते हैं स्वच्छ और आसानी से समझने योग्य कोड.
  3. पेज ऑब्जेक्ट मॉडल के साथ, वस्तुओं और परीक्षण के मामलों एक दूसरे से स्वतंत्र हैं। हम पूरे प्रोजेक्ट में कहीं भी ऑब्जेक्ट को कॉल कर सकते हैं। इस तरह, यदि हम कार्यात्मक परीक्षण के लिए टेस्टएनजी/जुनीट या स्वीकृति परीक्षण के लिए ककड़ी जैसे विभिन्न उपकरणों का उपयोग कर रहे हैं, तो यह आसानी से है सुलभ.

स्टेप बाय स्टेप पेज ऑब्जेक्ट मॉडल सरू उदाहरण के साथ

यह खंड समझेगा कि पेज ऑब्जेक्ट मॉडल कैसे बनाया जाता है वास्तविक समय के उदाहरणों के साथ सरू जिसे हम परियोजनाओं में लागू कर सकते हैं। हम पेज ऑब्जेक्ट मॉडल बनाने के लिए मूल सेटअप और चरण-दर-चरण प्रक्रिया से समझेंगे।

आइए उस परिदृश्य पर चर्चा करें जिस पर हम इस उदाहरण में फ़ंक्शन लिखेंगे।

  1. पर जाए https://admin-demo.nopcommerce.com/ वेबसाइट
  2. मान्य उपयोगकर्ता नाम और पासवर्ड दर्ज करें
  3. लॉग इन बटन पर क्लिक करें
  4. यूआरएल की पुष्टि करें कि क्या इसे जोड़ा गया है /admin लॉगिन के बाद

हम इस उदाहरण के लिए दो फाइलें बनाएंगे - एक पेजऑब्जेक्ट फाइल और एक स्पेक फाइल। चलो शुरू करें!

चरण 1: हमारे प्रोजेक्ट को VS कोड में खोलें। नाम का फोल्डर बनाएं पेजऑब्जेक्ट नीचे एकीकरण फ़ोल्डर। इस फोल्डर के तहत आप किसी भी मॉड्यूल के लिए पेज ऑब्जेक्ट फाइल बना सकते हैं।

Anysnap 26 अगस्त 2021 शाम 7 बजकर 08 मिनट पर
पेजऑब्जेक्ट नाम का नया फोल्डर

चरण 2: नाम की एक फाइल बनाएं लॉग इनपेज.जेएस नीचे पेजऑब्जेक्ट फ़ोल्डर। LoginPage.js में, हम उन विधियों को लिखेंगे जिनमें लॉगिन कार्यात्मकताएं शामिल हैं।

Anysnap 26 अगस्त 2021 शाम 8 बजकर 33 मिनट पर
PageObject फ़ोल्डर के अंतर्गत LoginPage.js निर्माण

चरण 3: आइए अपनी पहली टेस्ट विधि लिखना शुरू करें लॉगिनपेज.जेएस फ़ाइल। हमें पहले एक क्लास बनानी होगी जिसे हम अपनी स्पेक फाइल में एक्सपोर्ट करेंगे। हम अपनी कक्षा को के रूप में बुलाएंगे लोग इन वाला पन्ना

क्लास लॉग इनपेज { }

हमारे छद्म कोड के आधार पर, हमारा पहला कदम यूआरएल पर नेविगेट करना है। हम अपनी विधि को इस प्रकार कहेंगे navigate(). हमारी नेविगेट विधि के अंदर, हम जोड़ देंगे cy.visit() साइप्रस से समारोह।

 नेविगेट () { cy.visit ('https://admin-demo.nopcommerce.com/')}

Anysnap 26 अगस्त 2021 शाम 8 बजकर 51 मिनट पर
नेविगेट विधि

चरण 4: अब, हमें अपने ईमेल क्षेत्र में उपयोगकर्ता नाम दर्ज करना होगा। हम अपनी विधि का नाम इस प्रकार रखेंगे ईमेल दर्ज करें(). सबसे पहले, हमें ईमेल फ़ील्ड का लोकेटर प्राप्त करना चाहिए और उन्हें एक्सेस करना चाहिए cy.get() आदेश। फिर हम का उपयोग करके क्षेत्र को साफ़ करेंगे clear() कमांड और यूज़रनेम का उपयोग करके जोड़ें type() आदेश। हमारी पद्धति में, हम एक पैरामीटर पास करते हैं उपयोगकर्ता नाम कल्पना फ़ाइल में मान पास करने के लिए। इस तरह, यदि किसी भिन्न ईमेल आईडी की आवश्यकता है, तो हम इस पद्धति तक पहुँचने के लिए इसे सामान्य बना रहे हैं।

EnterEmail(उपयोगकर्ता नाम) { cy.get('[id=Email]').clear() cy.get('[id=Email]').type(username); इसे वापस करें }

लिखने के बजाय cy.get() उपरोक्त कोड में दो बार कमांड करें, हम बस उन्हें लूप कर सकते हैं डॉट ऑपरेटर.

  EnterEmail(उपयोगकर्ता नाम) { cy.get('[id=Email]') .clear() .type(username); इसे वापस करें }

Anysnap 26 अगस्त 2021 रात्रि 9 01 21 बजे 1
दर्जईमेल विधि

आपने गौर किया होगा return this लाइन 9 में। इसका इंगित करता है कि ईमेल दर्ज करें विधि विशेष से संबंधित है लोग इन वाला पन्ना कक्षा। मूल रूप से, इसका वर्ग का प्रतिनिधित्व करता है।

चरण 5: हमें अपनी एंटरईमेल पद्धति के समान पासवर्ड के लिए एक विधि बनानी होगी। हम अपनी पासवर्ड विधि को इस प्रकार कहेंगे enterPassword(). प्रारंभ में, हम पासवर्ड के लिए लोकेटर प्राप्त करेंगे, फ़ील्ड साफ़ करेंगे और इनपुट मान टाइप करेंगे। हम अपनी विधि के लिए एक पैरामीटर पास करेंगे जिसे कहा जाता है पीएसडब्ल्यूडी और में पहुंच type() आदेश।

EnterPassword(pswd) { cy.get('[id=Password]') .clear() .type(pswd) इसे वापस करें }
स्क्रीनशॉट 2021 08 26 अपराह्न 9.54.47 बजे
पासवर्ड विधि दर्ज करें

चरण 6: हमारी आखिरी विधि लॉगिन बटन पर क्लिक करना होगा। हम अपनी विधि का नाम इस प्रकार रखेंगे submit(). हम लोकेटर प्राप्त करेंगे और का उपयोग करके बटन पर क्लिक करेंगे click() साइप्रस से विधि।

 सबमिट करें () { cy.get ('[टाइप = सबमिट]')। क्लिक करें ()}

स्क्रीनशॉट 2021 08 26 अपराह्न 9.57.55 बजे
सबमिट विधि

कदम 7: अब, हमें अपनी विशिष्ट फ़ाइल में इसका उपयोग करने के लिए इस वर्ग को निर्यात करना होगा। इसके लिए, हम अपनी कक्षा के बाहर केवल एक पंक्ति जोड़ते हैं, और हम इसे अपनी विशिष्ट फ़ाइल में आसानी से एक्सेस कर सकते हैं।

निर्यात डिफ़ॉल्ट लॉगिनपेज

स्क्रीनशॉट 2021 08 26 अपराह्न 10.01.24 बजे
निर्यात आदेश

हुर्रे! हमने अपने प्रोजेक्ट के लिए एक पेज ऑब्जेक्ट फ़ाइल बनाई है। यह काफी सरल और आसान था!

विशिष्ट फ़ाइल में पृष्ठ वस्तुओं तक पहुँचना

अब हम अपनी टेस्ट केस फाइल पर चलते हैं। हमें अपने इंटीग्रेशन फोल्डर में एक स्पेक फाइल बनानी होगी। हम अपनी विशिष्ट फ़ाइल को कॉल करेंगे POMDemo.spec.js.

Anysnap 27 अगस्त 2021 शाम 12 बजकर 01 मिनट पर
POMDemo.spec.js फ़ाइल निर्माण

चरण 1: LoginPage.js फ़ाइल में हमारे तरीकों तक पहुँचने के लिए, हमें अवश्य आयात उन्हें हमारी कल्पना फ़ाइल में। हम आयात विवरण का उपयोग करके आयात करते हैं। हमें LoginPage.js फ़ाइल का उपयोग करके नेविगेट करना चाहिए ../

हमारे मामले में, पथ है ../integration/PageObject/LoginPage. तो, आयात विवरण नीचे जैसा कुछ दिखाई देगा।

"../एकीकरण/पेजऑब्जेक्ट/लॉगिनपेज" से लॉगिन पेज आयात करें

चरण 2: चूंकि हम मोचा का उपयोग करते हैं, हम अपना टेस्ट केस अंदर लिखेंगे describe() और it() खंड मैथा। वर्णन () एक का प्रतिनिधित्व करता है परीक्षण सूट, और यह () a . का प्रतिनिधित्व करता है परीक्षण का मामला. दोनों ब्लॉक एक फ़ंक्शन हैं और एक स्ट्रिंग पैरामीटर को स्वीकार करते हैं जिसमें शामिल हैं विवरण परीक्षण के।

वर्णन करें ("सरू पोम टेस्ट सूट", फ़ंक्शन () {})

Anysnap 27 अगस्त 2021 शाम 12 बजकर 17 मिनट पर
ब्लॉक का वर्णन करें

डिस्क्रिप्शन ब्लॉक के अंदर, हम अपना लिखेंगे it() विवरण को वैध क्रेडेंशियल के साथ लॉगिन के रूप में जोड़कर।

it ("वैध क्रेडेंशियल के साथ लॉगिन करें", फ़ंक्शन () { })

Anysnap 27 अगस्त 2021 शाम 12 बजकर 20 मिनट पर
यह ब्लॉक

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

                                               कॉन्स्ट लॉगिन = नया लॉगिनपेज ();
Anysnap 27 अगस्त 2021 शाम 1 बजकर 05 मिनट पर
एक वर्ग का उदाहरण

नोट: चर के साथ login, हम पेज ऑब्जेक्ट क्लास से विधियों तक पहुँच सकते हैं। जब हम टाइप करना शुरू करते हैं login. , vscode, LoginPage.js फ़ाइल में उपलब्ध सभी विधियों के सुझावों को सूचीबद्ध करेगा। इससे हमें यह सत्यापित करने में मदद मिलती है कि हमने अपनी कक्षा को ठीक से निर्यात और आयात किया है!

चरण 4: आइए हम अपने . को कॉल करें navigate() URL पर जाने की विधि। हमारे परीक्षण मामले में यह पहली क्रिया है।

/// "./PageObject/LoginPage" से लॉगिन पेज आयात करें ("साइप्रेस पोम टेस्ट सूट", फ़ंक्शन () {यह ("वैध क्रेडेंशियल के साथ लॉगिन करें", फ़ंक्शन () { const लॉगिन = नया लॉगिनपेज (); लॉगिन.नेविगेट (); }); });

चरण 5: हमें ईमेल फ़ील्ड में उपयोगकर्ता नाम दर्ज करना चाहिए। हम पहुँचते हैं enterEmail() साथ लॉग इन वस्तु। enterEmail() विधि एक पैरामीटर स्वीकार करती है उपयोगकर्ता नाम. इसलिए हमें यूज़रनेम के लिए मान को a . के रूप में पास करना चाहिए स्ट्रिंग हमारी विशिष्ट फ़ाइल में

/// "./PageObject/LoginPage" से लॉगइनपेज आयात करें वर्णन करें ("साइप्रस पीओएम टेस्ट सूट", फ़ंक्शन() { यह ("वैध क्रेडेंशियल्स के साथ लॉगिन करें", फ़ंक्शन() { स्थिरांक लॉगिन = नया लॉगिनपेज(); लॉगिन.नेविगेट(); लॉगिन.एंटरईमेल('[ईमेल संरक्षित]'); }) })

चरण 6: चरण ५ के समान, हमें अपने . को कॉल करना चाहिए enterPassword() स्ट्रिंग में पैरामीटर के रूप में पासवर्ड पास करके विधि।

/// "./PageObject/LoginPage" से लॉगइनपेज आयात करें वर्णन करें ("साइप्रस पीओएम टेस्ट सूट", फ़ंक्शन() { यह ("वैध क्रेडेंशियल्स के साथ लॉगिन करें", फ़ंक्शन() { स्थिरांक लॉगिन = नया लॉगिनपेज(); लॉगिन.नेविगेट(); लॉगिन.एंटरईमेल('[ईमेल संरक्षित]'); लॉगिन.एंटरपासवर्ड('एडमिन'); }) })

चरण 7: अगला, हमें लॉगिन बटन पर क्लिक करना होगा। हम विधि कहेंगे submit() हमारे पेज ऑब्जेक्ट फ़ाइल से।

/// "./PageObject/LoginPage" से लॉगइनपेज आयात करें वर्णन करें ("साइप्रस पीओएम टेस्ट सूट", फ़ंक्शन() { यह ("वैध क्रेडेंशियल्स के साथ लॉगिन करें", फ़ंक्शन() { स्थिरांक लॉगिन = नया लॉगिनपेज(); लॉगिन.नेविगेट(); लॉगिन.एंटरईमेल('[ईमेल संरक्षित]'); लॉगिन.एंटरपासवर्ड('एडमिन'); लॉगिन.सबमिट(); }) })

चरण 8: लॉग इन करने के बाद हमें यूआरएल पर जोर देना होगा। हम सत्यापित करेंगे कि क्या URL है बराबर लॉगिन के बाद URL पर। अभिकथन के लिए, हम उपयोग करेंगे चाय अभिकथन पुस्तकालय, जो सरू के साथ अंतर्निर्मित है।

/// "./PageObject/LoginPage" से लॉगइनपेज आयात करें वर्णन करें ("साइप्रस पीओएम टेस्ट सूट", फ़ंक्शन() { यह ("वैध क्रेडेंशियल्स के साथ लॉगिन करें", फ़ंक्शन() { स्थिरांक लॉगिन = नया लॉगिनपेज(); लॉगिन.नेविगेट(); लॉगिन.एंटरईमेल('[ईमेल संरक्षित]'); लॉगिन.एंटरपासवर्ड('एडमिन'); लॉगिन.सबमिट(); cy.url().चाहिए('be.equal', 'https://admin-demo.nopcommerce.com/admin/') }) })

Anysnap 27 अगस्त 2021 शाम 4 बजकर 39 मिनट पर
लॉगिन टेस्ट केस

उपरोक्त छवि लॉगिन परीक्षण मामले का प्रतिनिधित्व करती है। हम बहुत कम सरल चरणों के साथ एक पेज ऑब्जेक्ट मॉडल के साथ एक परीक्षण केस लिखने में सक्षम थे। अब हम टेस्ट केस चलाते हैं और परिणाम देखते हैं।

हम सरू टेस्ट रनर को खोलेंगे और स्पेक फाइल पर क्लिक करेंगे और अपना टेस्ट केस चलाएंगे। इसे देखो लेख सरू टेस्ट रनर कैसे खोलें।

Anysnap 27 अगस्त 2021 रात्रि 1 41 55 बजे 2
सरू में परीक्षा परिणाम

हुर्रे! हमने सफलतापूर्वक एक टेस्ट केस लिखा है जो साइप्रस में पेज ऑब्जेक्ट मॉडल का उपयोग करता है। हम इस पैटर्न को रीयल-टाइम प्रोजेक्ट में शामिल कर सकते हैं। पेज ऑब्जेक्ट फ़ाइल में विधियों को लिखने के कई तरीके हैं। मैंने आपको एक उदाहरण दिखाया है जो मानक है और किसी भी परियोजना के लिए काम करता है। आप केवल भी लिख सकते हैं वापसी समारोह पेज ऑब्जेक्ट फ़ाइल में और फिर क्लिक करें और टाइप सीधे हमारी कल्पना फ़ाइल में।

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

इस प्रकार में, हम अपने मेथड में केवल लोकेटर फंक्शन लौटाएंगे और टेस्ट फाइल में एक्शन करेंगे। हम उसी परिदृश्य के लिए कोड लिखेंगे जो हमने ऊपर देखा था।

पेज ऑब्जेक्ट – LoginPage.js

क्लास लॉग इनपेज {नेविगेट () { cy.visit ('https://admin-demo.nopcommerce.com/')} एंटरईमेल () {रिटर्न cy.get ('[आईडी = ईमेल]') } एंटरपासवर्ड () {रिटर्न cy.get('[id=Password]') } सबमिट करें () {रिटर्न cy.get('[type=submit]') } } डिफ़ॉल्ट लॉग इनपेज निर्यात करें

जैसा कि हमने ऊपर देखा, हम अपने फंक्शन के अंदर केवल लोकेटर लिख रहे हैं और उन्हें वापस कर रहे हैं। रिटर्न दर्शाता है कि विशेष विधि का है क्लास लॉग इनपेज.जेएस. हम अपने तरीकों में कोई क्रिया नहीं जोड़ रहे हैं।

Anysnap 27 अगस्त 2021 शाम 4 बजकर 48 मिनट पर
पृष्ठ वस्तु फ़ाइल उदाहरण

विशिष्ट फ़ाइल - POMDemo.spec.js

हम कल्पना फ़ाइल में विधियों तक पहुँचने के उदाहरण पर गौर करेंगे।

/// "./PageObject/LoginPage" से लॉगइनपेज आयात करें वर्णन करें ("साइप्रस पीओएम टेस्ट सूट", फ़ंक्शन() { यह ("वैध क्रेडेंशियल्स के साथ लॉगिन करें", फ़ंक्शन() { स्थिरांक लॉगिन = नया लॉगिनपेज(); लॉगिन.नेविगेट(); लॉगिन.एंटरईमेल().क्लियर() लॉगिन.एंटरईमेल().टाइप('[ईमेल संरक्षित]'); लॉगिन.एंटरपासवर्ड().क्लियर() लॉगिन.एंटरपासवर्ड().टाइप('एडमिन'); लॉगिन.सबमिट().क्लिक करें(); cy.url().should('be.equal', 'https://admin-demo.nopcommerce.com/admin/') }); });

स्क्रीनशॉट 2021 08 28 अपराह्न 7.35.20 बजे
विशिष्ट फ़ाइल उदाहरण

यहां, हम पेजऑब्जेक्ट फ़ाइल से विधि को कॉल करते हैं और परीक्षण केस क्रियाएं करते हैं। तो सबसे पहले, हम अपने रेफरेंस वेरिएबल को कॉल कर रहे हैं लॉग इन और फिर इसे विधि के साथ जोड़ना enterEmail() और अंत में क्रिया को जोड़ना टाइप। हमारे में type(), हम उपयोगकर्ता नाम पारित कर रहे हैं मूल्य.

Anysnap 27 अगस्त 2021 रात्रि 1 41 55 बजे 3
परीक्षा परिणाम

जैसा कि आप देख सकते हैं, सभी आदेश निष्पादित किए गए हैं, और परीक्षण मामला बीत चुका है!

आप जो भी पेज ऑब्जेक्ट मॉडल चुन सकते हैं वह आपके प्रोजेक्ट और आपकी राय के अनुकूल हो। केवल एक प्रक्रिया से चिपके रहने का कोई विशेष नियम नहीं है।

साइप्रस में पेज ऑब्जेक्ट मॉडल में टेस्ट डेटा स्रोत के रूप में फिक्स्चर का उपयोग कैसे करें?

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

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

सरू "" नामक एक फ़ोल्डर प्रदान करता हैफिक्स्चर।" हम एक बनाएंगे JSON फ़ाइल कहा जाता है साख.JSON 'फिक्स्चर' फ़ोल्डर के तहत।

स्क्रीनशॉट 2021 08 28 अपराह्न 6.58.39 बजे
JSON फ़ाइल निर्माण

आइए हम अपना उपयोगकर्ता नाम, पासवर्ड और URL मान घोषित करें जिन्हें हमें JSON प्रारूप में सत्यापित करने की आवश्यकता है क्रेडेंशियल.जेसन फ़ाइल.

{ "उपयोगकर्ता नाम" : "[ईमेल संरक्षित]", "पासवर्ड" : "एडमिन", "एडमिनयूआरएल" : "https://admin-demo.nopcommerce.com/admin/" }

स्क्रीनशॉट 2021 08 28 अपराह्न 7.30.53 बजे
क्रेडेंशियल.जेसन फ़ाइल में मान पास करना

परीक्षण केस फ़ाइल में JSON फ़ाइल से मानों तक पहुँचना

जैसा कि हमने अपनी JSON फ़ाइल में मानों को परिभाषित किया है, हम उन्हें अपनी टेस्ट केस फ़ाइल में उपयोग करके एक्सेस करेंगे फिक्स्चर साइप्रस से. हम JSON मान को एक्सेस करेंगे इसका  खोजशब्द। आइए फिक्स्चर फ़ंक्शन को a . में लपेटें इससे पहले() ब्लॉक।

वर्णन करें ("सरू पोम टेस्ट सूट", फ़ंक्शन () {पहले (फ़ंक्शन () { cy.fixture ('क्रेडेंशियल्स')। फिर (फ़ंक्शन (टेस्टडेटा) {this.testdata = testdata})})

cy.fixture('credentials').then(function (testdata) {this.testdata = testdata}) - यह रेखा दर्शाती है कि हम गुजर रहे हैं क्रेडेंशियल.जेसन हमारे पैरामीटर के रूप में फ़ाइल करें साइ.स्थिरता () आदेश। यहां, हमें यह पारित करने की आवश्यकता नहीं है कि यह एक JSON फ़ाइल है या नहीं। बस फ़ाइल का नाम अकेले पास करें। बाद में, हम पास परीक्षण डेटा फ़ंक्शन में एक पैरामीटर के रूप में और एक्सेस करें परीक्षण डेटा चर का उपयोग कर इसका .

/// "./PageObject/LoginPage" से लॉगिन पेज आयात करें ("साइप्रेस पोम टेस्ट सूट", फ़ंक्शन () {पहले (फ़ंक्शन () { cy.fixture ('क्रेडेंशियल्स')। तब (फ़ंक्शन (टेस्टडेटा) { this.testdata = testdata })}) यह ("वैध क्रेडेंशियल के साथ लॉगिन करें", फ़ंक्शन () { const लॉगिन = नया लॉग इनपेज (); लॉगिन.नेविगेट (); लॉगिन.एंटरईमेल (this.testdata.username) login.enterPassword(this.testdata.password ) login.submit(); cy.url(). चाहिए ('be.equal', this.testdata.adminUrl)}); });

लॉगिन.एंटरईमेल(यह.टेस्टडेटा.उपयोगकर्ता नाम) - यह क्रेडेंशियल.जेसन फ़ाइल से उपयोगकर्ता नाम मान प्राप्त करेगा और इसे ईमेल फ़ील्ड में भर देगा।

login.enterPassword (यह.testdata.password) - यह क्रेडेंशियल.जेसन फ़ाइल से पासवर्ड मान प्राप्त करेगा और इसे पासवर्ड फ़ील्ड में भर देगा

cy.url(). चाहिए ('be.equal', this.testdata.adminUrl) - यह adminUrl को क्रेडेंशियल.जेसन फ़ाइल से प्राप्त करेगा और अभिकथन में मान्य होगा

स्क्रीनशॉट 2021 08 28 अपराह्न 7.32.17 बजे
JSON फ़ाइल से विशिष्ट फ़ाइल में डेटा पास करना

अब, परिणाम के लिए परीक्षण केस चलाते हैं।

Anysnap 27 अगस्त 2021 रात्रि 1 41 55 बजे 4
परीक्षा परिणाम

जैसा कि हम देख सकते हैं, परीक्षण मामलों को निष्पादित किया गया है और पारित किया गया है। यह उदाहरण आपको बुनियादी डेटा-संचालित परीक्षण केस लिखने में मदद करेगा। आप इस पद्धति का उपयोग करके इसे अपने प्रोजेक्ट में शामिल कर सकते हैं। आप फिक्स्चर फ़ोल्डर के अंतर्गत नई JSON फ़ाइलें बना सकते हैं, परीक्षण डेटा से संबंधित मान जोड़ सकते हैं, और किसी भी परीक्षण फ़ाइल में इसे एक्सेस कर सकते हैं।

आम सवाल-जवाब

क्या सरू पेज ऑब्जेक्ट मॉडल का समर्थन करता है?

बेशक। सरू भंडार में पृष्ठों और वस्तुओं के साथ खेलने के लिए सभी लचीलापन देता है। इसे लागू करना आसान है।

उपरोक्त उदाहरणों से मुझे किस पेज ऑब्जेक्ट मॉडल का उपयोग करना चाहिए?

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

मुझे साइप्रस में पेज ऑब्जेक्ट मॉडल में फिक्स्चर का उपयोग क्यों करना चाहिए?

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