सभी को नमस्कार!
मैं हमेशा दोहरे उद्देश्य वाले परीक्षण स्वचालन ढाँचे - यूआई और एपीआई परीक्षण कवरेज को संदेह की दृष्टि से देखता हूँ। आम तौर पर, आप अलग-अलग टेस्ट रन (या इवेंट प्रोजेक्ट) में परीक्षणों की अलग-अलग परतें चलाएंगे, क्योंकि उनमें से प्रत्येक की संभवतः अपनी-अपनी परतें होती हैं
हाल ही में, मैंने एपीआई परीक्षण के संदर्भ में नाटककार की पेशकश पर एक नज़र डाली और इसकी तुलना अपने साइप्रस अनुभव से की, इसलिए यहां मुझे आप सभी के साथ साझा करने के लिए क्या मिला है...
साइप्रस ने कुछ समय पहले एपीआई परीक्षण संभव बनाया था। उदाहरणों के साथ एपीआई परीक्षण के संदर्भ में यह उपकरण कितना बढ़िया है, इसके बारे में आप लर्न पोर्टल पर एक लेख पा सकते हैं।
परीक्षण चलाने के लिए, आपको अपनी प्रोजेक्ट निर्भरताएँ स्थापित करने की आवश्यकता है, है ना? ठीक है, साइप्रस एक इलेक्ट्रॉन ब्राउज़र के साथ आता है, और यदि आप विशेष रूप से एपीआई परीक्षण चलाना चाहते हैं तो इसे स्थापित करना काफी अनावश्यक (और समय लेने वाला) हो सकता है (मान लीजिए, आपको यूआई और एपीआई परीक्षण चलाने के लिए सीआई में अलग-अलग नौकरियां मिली हैं, जो आमतौर पर होता है)।
अच्छा नहीं लग रहा, हुह? ☝️
इसके अलावा, जब आप एपीआई परीक्षण चलाते हैं - तो यह वैसे भी एक ब्राउज़र लॉन्च करता है।
साइप्रस के साथ एक सरल एपीआई परीक्षण इस तरह दिखेगा:
it('Sign in with valid credentials', () => { cy.request('POST', '/auth', { login: Cypress.env('username'), password: Cypress.env('password'), }).should(response => { expect(response.body.token).to.be.a('string') expect(response.status).to.eq(200) }) })
सुंदर लग रहा है
साइप्रस की तरह, प्लेराइट एक टेस्ट ऑटोमेशन फ्रेमवर्क है - आप केवल एक ब्राउज़र ऑटोमेशन टूल का उपयोग कर सकते हैं, या पूरे फ्रेमवर्क (टेस्ट रनर, एसेरेशन लाइब्रेरी, ब्राउज़र ऑटोमेशन टूल, HTTP क्लाइंट, रिपोर्टर, आदि) का उपयोग कर सकते हैं।
यहां अंतर यह है कि प्लेराइट बॉक्स से बाहर किसी भी ब्राउज़र के साथ नहीं आता है - आपको उन्हें एक अलग कमांड के साथ इंस्टॉल करना होगा (यदि आप चाहते हैं)।
यह यहां एक बड़ा अंतर बनाता है, क्योंकि विशेष रूप से एपीआई परीक्षण चलाने के मामले में, यह कोई ब्राउज़र या कोई अन्य डेस्कटॉप ऐप नहीं चलाएगा और आपकी मशीन पर कुछ रन टाइम और संसाधनों को बचाएगा।
प्लेराइट के साथ एक सरल एपीआई परीक्षण इस तरह दिखेगा:
import {test, expect} from '@playwright/test' test('Sign in with valid credentials', async ({request}) => { const response = await request.post('/auth', { data: { login: process.env.USERNAME, password: process.env.PASSWORD, }, }) expect(response.status()).toEqual(200) expect(await response.json()).toEqual({ token: expect.any(String), }) })
मैं वस्तुओं पर जोर देने के जेस्ट-जैसे वाक्यविन्यास को उजागर करना चाहूंगा:
expect(await response.json()).toEqual({ token: expect.any(String), })
यह सिंटैक्स आपको केवल एक expect
कॉल ☝️ के साथ ऑब्जेक्ट की पूरी संरचना को सत्यापित करने की अनुमति देता है
एपीआई परीक्षण छोटे और हल्के होने चाहिए क्योंकि उन्हें चलाने के लिए बहुत अधिक की आवश्यकता नहीं होती है।
आइए उपरोक्त सामग्री को संक्षेप में प्रस्तुत करें...
✅ नाटककार एक बॉक्स से 13 गुना तेज स्वच्छ इंस्टॉलेशन के साथ जीतता है।
ℹ️ यदि आप पूर्व-स्थापित निर्भरता वाली छवि का उपयोग करते हैं या उन्हें अपने सीआई स्टोरेज में कैश करते हैं तो आप सीआई में साइप्रस इंस्टॉलेशन समय को कम कर सकते हैं।
✅ नाटककार जीतता है क्योंकि उसे एपीआई परीक्षण चलाने के लिए ब्राउज़र की आवश्यकता नहीं होती है, इसलिए वह सीधे मुद्दे पर आता है।
ℹ️ एपीआई परीक्षणों में ब्राउज़र को "नहीं चलाने" का कोई तरीका नहीं है, क्योंकि यह फ्रेमवर्क के तर्क का हिस्सा है।
यहां कोई विजेता नहीं चुन सकता, क्योंकि न तो साइप्रस और न ही नाटककार के लिए कोई वस्तुनिष्ठ लाभ है।
उन दोनों को थोड़े अंतर के साथ बहुत सीधा वाक्यविन्यास मिला। मैं कहूंगा कि यह परीक्षक का निर्णय है कि वह यहां क्या पसंद करता है।
मैं निश्चित रूप से कह सकता हूं कि इसके प्रदर्शन के कारण एपीआई परीक्षण स्वचालन के लिए प्लेराइट का उपयोग करना काफी सुरक्षित है। यदि आपके पास पहले से ही इस ढांचे के साथ यूआई परीक्षण हैं तो यह एक उचित समाधान होगा।
उन लोगों के लिए मेरी सलाह जो यूआई परीक्षणों के लिए साइप्रस का उपयोग करते हैं और एपीआई परत को कवर करना चाहते हैं - बेहतर कुछ और का उपयोग करें ( जेस्ट + एक्सियोस , आप वहां एक उदाहरण देख सकते हैं)।