सभी को नमस्कार, आज मैं आपको शीपी नामक एक नई इकाई परीक्षण लाइब्रेरी से परिचित कराने आया हूं, लेकिन पहले इकाई परीक्षण के महत्व के बारे में बात करते हैं। यह लाइब्रेरी शुरुआती लोगों के लिए नहीं है, इसके साथ यूनिट परीक्षण करने के लिए आपको थोड़ा अतिरिक्त ध्यान देने की आवश्यकता होगी। इसमें केवल एंडपॉइंट और http त्रुटि जांच मॉड्यूल के साथ एपीआई परीक्षण के लिए दावे हैं।
जीथब लिंक: जीथब
PyPi लिंक: pypi
उत्पादन में सभी परिपक्व, स्वाभिमानी सॉफ़्टवेयर में यूनिट परीक्षण होते हैं, चाहे यह समझने के लिए कि कोड में जो पहले से था वह काम कर रहा है या नहीं, उन बग को रोकने के लिए जो पहले ही रिपोर्ट किए जा चुके हैं और पहले ही ठीक कर दिए गए हैं या नई सुविधाओं का परीक्षण करने के लिए, यह यह एक अच्छा संकेत है कि वे चीजें आगे बढ़ रही हैं और तकनीकी ऋण जमा नहीं हो रहा है। आइए एक उदाहरण के रूप में फ़ायरफ़ॉक्स ब्राउज़र का उपयोग करें, प्रत्येक निर्देशिका में एक परीक्षण उपनिर्देशिका होती है, जिसमें पहले से ही रिपोर्ट किए गए बग के लिए विशिष्ट परीक्षण होते हैं, इस तरह वे गारंटी देते हैं कि तय किए गए बग फिर से कहीं से भी दिखाई नहीं देंगे, जो बग पहले ही ठीक कर दिए गए हैं वे सामने आ जाते हैं फिर कहीं का इसे पैसा फेंकना कहा जाता है। समय के साथ आप एक प्रतिस्पर्धी के हाथों समय, पैसा, दक्षता और बाजार हिस्सेदारी खो रहे हैं जो कम संसाधनों के साथ आपसे बेहतर प्रदर्शन कर रहा है।
हर कोई जो कुछ करने में असमर्थ महसूस करता है वह उस चीज को बदनाम करने की कोशिश करता है, और यूनिट परीक्षण भी अलग नहीं हैं। प्रत्येक उपयोग के मामले को कवर करने वाले बेहतर यूनिट परीक्षण बनाने में समय लगता है, जीवन में हर चीज की तरह, आप बैकएंड करते हैं, मुझे संदेह है कि आपने सिर्फ एक ट्यूटोरियल पढ़ा और सही एपीआई बना लिया, आपके फ्रंटएंड के लिए भी यही बात है, मुझे संदेह है कि आपने एक कोर्स देखा और आए इंटरफ़ेस को उत्तम बनाना। तो यह मत सोचिए कि यूनिट परीक्षणों के साथ यह कुछ अलग होगा!
अभिकथन विधियां
----------------------- ------------------------------------------------------- | Assertion Method | Description | ----------------------- ------------------------------------------------------- | assertEqual(a, b) | Checks if two values are equal. | | assertNotEqual(a, b) | Checks if two values are not equal. | | assertTrue(expr) | Verifies that the expression is True. | | assertFalse(expr) | Verifies that the expression is False. | | assertRaises(exc, fn) | Asserts that a function raises a specific exception. | | assertStatusCode(resp) | Verifies if the response has the expected status code.| | assertJsonResponse(resp)| Confirms the response is in JSON format. | | assertResponseContains(resp, key) | Ensures the response contains a given key. | ----------------------- -------------------------------------------------------
स्थापना
इसे इंस्टॉल करना बहुत आसान है, बस अपनी पसंद का एक टर्मिनल खोलें, जिसमें पाइप इंस्टॉल हो और टाइप करें पाइप इंस्टॉल शीपी
उपयोग उदाहरण
from sheepy.sheeptest import SheepyTestCase class ExampleTest(SheepyTestCase): def test_success(self): self.assertTrue(True) def test_failure(self): self.assertEqual(1, 2) def test_error(self): raise Exception("Forced error") @SheepyTestCase.skip("Reason to ignore") def test_skipped(self): pass @SheepyTestCase.expectedFailure def test_expected_failure(self): self.assertEqual(1, 2)
SheepyTestCase क्लास यूनिट परीक्षणों को बनाने और निष्पादित करने के लिए कई कार्यात्मकताएं प्रदान करता है, जिसमें विशेष व्यवहारों को कॉन्फ़िगर करने के लिए मुखरता के तरीके और तंत्र शामिल हैं, जैसे परीक्षणों को छोड़ना या अपेक्षित विफलताओं को संभालना।
ExampleTest वर्ग के भीतर, पांच परीक्षण विधियों को परिभाषित किया गया है:
test_success: यह परीक्षण जांचता है कि क्याassertTrue विधि में पारित अभिव्यक्ति सत्य है। चूँकि सही मान स्पष्ट रूप से पारित हो गया है, यह परीक्षण सफल होगा।
test_failure: यह परीक्षणassertEqual पद्धति का उपयोग करके दो मानों के बीच समानता की जाँच करता है। हालाँकि, तुलना किए गए मान, 1 और 2, भिन्न हैं, जिसके परिणामस्वरूप परीक्षण विफल हो जाता है। यह अपेक्षित विफलता का मामला दर्शाता है, जहां परीक्षण को असंगतता का पता लगाना चाहिए।
test_error: यह विधि "जबरन त्रुटि" संदेश के साथ एक उद्देश्यपूर्ण अपवाद उठाती है। लक्ष्य परीक्षण निष्पादन के दौरान होने वाली त्रुटियों से निपटने के दौरान सिस्टम के व्यवहार का परीक्षण करना है। चूंकि विधि अपवाद को संभाले बिना फेंक देती है, परिणाम परीक्षण में एक त्रुटि होगी।
test_skipped: इस परीक्षण को SheepyTestCase वर्ग की स्किप विधि से सजाया गया है, जिसका अर्थ है कि परीक्षण चलाते समय इसे छोड़ दिया जाएगा। परीक्षण छोड़ने का कारण "अनदेखा करने का कारण" के रूप में प्रदान किया गया था, और यह औचित्य अंतिम परीक्षण रिपोर्ट में प्रदर्शित किया जा सकता है।
test_expected_failure: यह विधि अपेक्षित विफलता डेकोरेटर का उपयोग करती है, जो दर्शाती है कि विफलता अपेक्षित है। विधि के अंदर, 1 और 2 के बीच एक समानता जांच होती है, जिसके परिणामस्वरूप आम तौर पर विफलता होती है, लेकिन जैसा कि डेकोरेटर लागू किया गया था, फ्रेमवर्क इस विफलता को अपेक्षित व्यवहार का हिस्सा मानता है और इसे त्रुटि के रूप में नहीं माना जाएगा, लेकिन "अपेक्षित विफलता" के रूप में।
आउटपुट
परीक्षा के परिणाम:
उदाहरणटेस्ट.टेस्ट_त्रुटि: विफल - जबरन त्रुटि
exampleTest.test_expected_failure: अपेक्षित विफलता
उदाहरणटेस्ट.टेस्ट_विफलता: विफल - 1 != 2
उदाहरणटेस्ट.टेस्ट_स्किप्ड: छोड़ दिया गया -
उदाहरणटेस्ट.टेस्ट_सफलता: ठीक
एपीआई परीक्षण मामला
शीपी टेस्ट फ्रेमवर्क में एपीआई परीक्षण को सीधा और शक्तिशाली बनाया गया है, जो परीक्षकों को GET, POST, PUT और DELETE जैसी सामान्य HTTP विधियों का उपयोग करके API के साथ इंटरैक्ट करने की अनुमति देता है। HttpError अपवाद वर्ग के माध्यम से अंतर्निहित त्रुटि प्रबंधन के साथ, अनुरोध भेजने और प्रतिक्रियाओं को संभालने को सरल बनाने के लिए फ्रेमवर्क एक समर्पित वर्ग, ApiRequests प्रदान करता है।
एपीआई का परीक्षण करते समय, परीक्षण वर्ग SheepyTestCase से प्राप्त होता है, जो एपीआई के व्यवहार को सत्यापित करने के लिए विभिन्न अभिकथन विधियों से सुसज्जित है। इनमें HTTP स्थिति कोड को सत्यापित करने के लिएassertStatusCode, यह सुनिश्चित करने के लिएassertJsonResponse शामिल है कि प्रतिक्रिया JSON प्रारूप में है, और यह जांचने के लिएassertResponseContains शामिल है कि प्रतिक्रिया निकाय में विशिष्ट कुंजियाँ मौजूद हैं या नहीं।
उदाहरण के लिए, फ्रेमवर्क आपको एक एपीआई के लिए एक POST अनुरोध भेजने की अनुमति देता है, सत्यापित करता है कि स्थिति कोड अपेक्षित मूल्य से मेल खाता है, और दावा करता है कि JSON प्रतिक्रिया में सही डेटा है। एपीआई अनुरोधों को ApiRequests वर्ग के माध्यम से नियंत्रित किया जाता है, जो अनुरोधों के निर्माण और भेजने का ध्यान रखता है, जबकि सर्वर द्वारा अप्रत्याशित स्थिति कोड लौटाने पर HTTP-विशिष्ट त्रुटियों को बढ़ाकर त्रुटि प्रबंधन को सुव्यवस्थित किया जाता है।
अंतर्निहित दावे और त्रुटि प्रबंधन प्रदान करके, फ्रेमवर्क एपीआई परीक्षण में दोहराए जाने वाले अधिकांश कार्यों को स्वचालित करता है, जिससे लेखन परीक्षणों में शुद्धता और सरलता दोनों सुनिश्चित होती है। यह प्रणाली डेवलपर्स को एपीआई व्यवहार और तर्क को सत्यापित करने पर ध्यान केंद्रित करने की अनुमति देती है, जिससे यह एपीआई इंटरैक्शन की विश्वसनीयता सुनिश्चित करने के लिए एक कुशल उपकरण बन जाता है।
from sheepy.sheeptest import SheepyTestCase class TestHttpBinApi(SheepyTestCase): def __init__(self): super().__init__(base_url="https://httpbin.org") def test_get_status(self): response = self.api.get("/status/200") self.assertStatusCode(response, 200) def test_get_json(self): response = self.api.get("/json") self.assertStatusCode(response, 200) self.assertJsonResponse(response) self.assertResponseContains(response, "slideshow") def test_post_data(self): payload = {"name": "SheepyTest", "framework": "unittest"} response = self.api.post("/post", json=payload) self.assertStatusCode(response, 200) self.assertJsonResponse(response) self.assertResponseContains(response, "json") self.assertEqual(response.json()["json"], payload) def test_put_data(self): payload = {"key": "value"} response = self.api.put("/put", json=payload) self.assertStatusCode(response, 200) self.assertJsonResponse(response) self.assertResponseContains(response, "json") self.assertEqual(response.json()["json"], payload) def test_delete_resource(self): response = self.api.delete("/delete") self.assertStatusCode(response, 200) self.assertJsonResponse(response)
आउटपुट उदाहरण
Test Results: TestHttpBinApi.test_delete_resource: OK TestHttpBinApi.test_get_json: OK TestHttpBinApi.test_get_status: OK TestHttpBinApi.test_post_data: OK TestHttpBinApi.test_put_data: OK
सारांश:
नई शीपी लाइब्रेरी एक अविश्वसनीय इकाई परीक्षण लाइब्रेरी है, जिसमें केवल एपीआई परीक्षण के लिए एक मॉड्यूल सहित कई परीक्षण परिग्रहण विधियां हैं, मेरी राय में, यह शुरुआती लोगों के लिए लाइब्रेरी नहीं है, इसके लिए ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग के बुनियादी ज्ञान की आवश्यकता होती है जैसे विधियाँ, वर्ग और वंशानुक्रम।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3