पाययूनिट ट्यूटोरियल: Python यूनिट परीक्षण फ्रेमवर्क (उदाहरण सहित)

⚡ स्मार्ट सारांश

Python यूनिट टेस्टिंग आपके कोड के छोटे-छोटे हिस्सों की अलग-अलग जाँच करके शुरुआती चरण में ही बग्स का पता लगाती है। यहाँ आप यूनिट टेस्टिंग तकनीक, PyUnit (unittest) फ्रेमवर्क, इसकी प्रमुख क्लास, टेस्ट केस डिज़ाइन करने का तरीका और एक कार्यशील उदाहरण सीखेंगे।

  • 🧪 यह क्या है: यूनिट टेस्टिंग कोड की छोटी, अलग-थलग इकाइयों को सत्यापित करके शुरुआती चरण में ही बग्स को पकड़ लेती है।
  • 🔬 तकनीक: टीडीडी, स्टब्स और मॉक्स कोड को अलग करते हैं ताकि यूनिट स्वतंत्र रूप से परीक्षण कर सकें।
  • 🐍 पाययूनिट: Pythonइसका अंतर्निर्मित unittest मॉड्यूल (PyUnit) का पोर्ट है JUnit.
  • 🧱 मुख्य कक्षाएं: टेस्टकेस, टेस्टसुइट, टेस्टलोडर, टेक्स्टटेस्टरनर और टेस्टरिजल्ट्स।
  • 🤖 एआई सहायता: कोपायलट जैसे एआई टूल तुरंत यूनिटटेस्ट टेस्ट केस तैयार करते हैं।

Python इकाई का परीक्षण

यूनिट टेस्टिंग क्या है?

इकाई का परीक्षण in Python यह एप्लिकेशन के विकास चरण में बगों की पहचान करने के लिए किया जाता है, जब बग कम बार-बार आते हैं और उन्हें ठीक करना कम महंगा होता है।

यूनिट परीक्षण एक स्क्रिप्टेड कोड स्तर परीक्षण है जिसे Python कार्यक्षमता की एक छोटी "इकाई" को सत्यापित करने के लिए। यूनिट टेस्ट एक ऑब्जेक्ट ओरिएंटेड फ्रेमवर्क है जो टेस्ट फिक्स्चर के आसपास आधारित है।

Python यूनिट परीक्षण तकनीकें

Python यूनिट परीक्षण में मुख्य रूप से किसी भी आश्रित कोड तक पहुँच के बिना किसी विशेष मॉड्यूल का परीक्षण करना शामिल है। डेवलपर्स कोड को "यूनिट" में अलग करने और अलग-अलग टुकड़ों पर यूनिट स्तर का परीक्षण चलाने के लिए स्टब्स और मॉक जैसी तकनीकों का उपयोग कर सकते हैं।

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

    दोनों विधियों का उद्देश्य एक ही है, किसी वर्ग या फ़ंक्शन की सभी निर्भरताओं के परीक्षण को समाप्त करना।

Python यूनिट परीक्षण फ्रेमवर्क

यूनिट परीक्षण प्रक्रिया को आसान बनाने और अपने प्रोजेक्ट की गुणवत्ता में सुधार करने के लिए, यह अनुशंसा की जाती है Python यूनिट परीक्षण फ्रेमवर्क। यूनिट परीक्षण फ्रेमवर्क में शामिल हैं

Python यूनिट परीक्षण तकनीकें

  • पाययूनिट: PyUnit कोड के स्वचालित परीक्षण के लिए फिक्स्चर, टेस्ट केस, टेस्ट सूट और टेस्ट रनर का समर्थन करता है। PyUnit में, आप समान फिक्स्चर वाले सूट में टेस्ट केस को व्यवस्थित कर सकते हैं
  • नाक: नोज़ के बिल्ट इन प्लग-इन आपको आउटपुट कैप्चर, कोड कवरेज, डॉकटेस्ट आदि में मदद करते हैं। नोज़ सिंटैक्स बहुत सरल है और टेस्ट लिखने में आने वाली बाधाओं को कम करता है। यह विस्तारित करता है Python परीक्षण को आसान बनाने के लिए unittest का उपयोग करें।
  • डॉकटेस्ट : डॉकटेस्ट परीक्षण स्क्रिप्ट फ़ाइल के निचले भाग में छोटे फ़ंक्शन के साथ डॉकस्ट्रिंग में जाती है। डॉकटेस्ट आपको दस्तावेज़ीकरण में शामिल उदाहरणों को चलाकर और यह सत्यापित करके अपने कोड का परीक्षण करने की अनुमति देता है कि उन्होंने अपेक्षित परिणाम लौटाए हैं। डॉकटेस्ट का उपयोग-मामला कम विस्तृत है और विशेष मामलों को नहीं पकड़ता है। वे मॉड्यूल और उसके घटकों के मुख्य उपयोग मामले के अभिव्यंजक दस्तावेज़ीकरण के रूप में उपयोगी हैं।

PyUnit के साथ यूनिट परीक्षण

प्यूनिट एक है Python का बंदरगाह JUnitPyunit के एक भाग के रूप में, यूनिटेस्ट मॉड्यूल में पाँच प्रमुख वर्ग हैं।

PyUnit के साथ यूनिट परीक्षण

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

के लिए एक परीक्षण मामला डिजाइन करना Python PyUnit का उपयोग करके परीक्षण

यूनिट टेस्ट एक बेस क्लास, टेस्ट केस प्रदान करता है, जिसका उपयोग नए टेस्ट केस बनाने के लिए किया जा सकता है। टेस्ट केस को डिज़ाइन करने के लिए, तीन तरह की विधियों का इस्तेमाल किया जाता है:

के लिए एक परीक्षण मामला डिजाइन करना Python

यूनिटटेस्ट।टेस्टकेस

setUp()
teardown()

skipTest(aMesg:string)
fail(aMesg:string)

id():string
shortDescription():string

पहले सेट में प्री और पोस्ट टेस्ट हुक हैं। सेटअप() विधि प्रत्येक टेस्ट रूटीन से पहले शुरू होती है, टियरडाउन() रूटीन के बाद।

विधि का दूसरा सेट परीक्षण निष्पादन को नियंत्रित करता है। दोनों विधियाँ इनपुट के रूप में एक संदेश स्ट्रिंग लेती हैं, और दोनों चल रहे परीक्षण को रद्द कर देती हैं। लेकिन skiptest() विधि वर्तमान परीक्षण को निरस्त कर देती है जबकि fail() विधि इसे पूरी तरह विफल कर देती है।

अंतिम या तीसरी विधि परीक्षण निर्धारित करने में मदद करती है। विधि id() टेस्टकेस ऑब्जेक्ट और टेस्ट रूटीन के नाम से युक्त एक स्ट्रिंग लौटाती है। और विधि शॉर्टDescription() प्रत्येक परीक्षण रूटीन के आरंभ में docstr टिप्पणी लौटाता है।

Python यूनिट टेस्ट उदाहरण

नीचे दिया गया उदाहरण unittest मॉड्यूल के साथ एक साधारण add() फ़ंक्शन का परीक्षण करता है। test_ उपसर्ग वाले प्रत्येक मेथड स्वचालित रूप से चलते हैं, और assertEqual अपेक्षित मान के विरुद्ध परिणाम की जाँच करता है।

import unittest

def add(a, b):
    return a + b

class TestAdd(unittest.TestCase):
    def test_add_positive(self):
        self.assertEqual(add(2, 3), 5)

    def test_add_negative(self):
        self.assertEqual(add(-1, -1), -2)

if __name__ == "__main__":
    unittest.main()

कोड को सेव करें और इसे python filename.py कमांड से चलाएं। unittest रनर बताएगा कि कितने टेस्ट पास हुए या फेल हुए।

उपयोग के लाभ Python इकाई परीक्षण

  • यह आपको विकास चक्र में प्रारंभिक अवस्था में ही बग का पता लगाने में मदद करता है
  • यह आपको बेहतर प्रोग्राम लिखने में मदद करता है
  • यह अन्य परीक्षण विधियों और उपकरणों के साथ आसानी से समन्वयित हो जाता है
  • इसमें बहुत कम बग होंगे
  • भविष्य में इसे बहुत कम परिणामों के साथ संशोधित करना आसान है

अक्सर पूछे जाने वाले प्रश्न

यूनिट टेस्टिंग किसी फंक्शन जैसे कोड के एक छोटे से हिस्से की अलग से जांच करती है। इससे विकास के शुरुआती चरण में ही बग्स का पता चल जाता है, जब उन्हें ठीक करना सस्ता और आसान होता है।

PyUnit है Pythonयह यूनिट टेस्टिंग फ्रेमवर्क का अंतर्निहित संस्करण है, जो unittest मॉड्यूल के रूप में उपलब्ध है। यह इसका पोर्ट है। JUnit और यह फिक्स्चर, टेस्ट केस, सूट और टेस्ट रनर को सपोर्ट करता है।

unittest.TestCase को सबक्लास करें, test_ से शुरू होने वाले मेथड लिखें और उनमें assertEqual जैसे असर्शन का उपयोग करें। सभी टेस्ट चलाने के लिए unittest.main() का उपयोग करके फ़ाइल को रन करें।

setUp() फ़ंक्शन प्रत्येक परीक्षण विधि से पहले फिक्स्चर तैयार करने के लिए चलता है, जबकि tearDown() फ़ंक्शन प्रत्येक परीक्षण के बाद सफाई करने के लिए चलता है। ये दोनों मिलकर परीक्षणों को स्वतंत्र और दोहराने योग्य बनाए रखते हैं।

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

GitHub Copilot जैसे AI सहायक एक फ़ंक्शन से यूनिटटेस्ट टेस्ट केस उत्पन्न करते हैं, एज केस और अभिकथन सुझाते हैं, और कोड लिखते समय निर्भरताओं के लिए मॉक बनाते हैं।

जी हां। एआई-संचालित उपकरण टेस्ट सूट तैयार करने को स्वचालित कर सकते हैं, अपेक्षित आउटपुट के लिए अभिकथन उत्पन्न कर सकते हैं और अनपरीक्षित शाखाओं के लिए परीक्षणों का सुझाव देकर कोड कवरेज बढ़ा सकते हैं।

यूनिटटेस्ट है Python's' क्लास और असर्ट मेथड का उपयोग करने वाला एक अंतर्निहित फ्रेमवर्क है, जबकि pytest एक थर्ड-पार्टी लाइब्रेरी है जिसमें सरल असर्ट स्टेटमेंट और शक्तिशाली फिक्स्चर हैं। दोनों यूनिट टेस्ट चलाते हैं।

इस पोस्ट को संक्षेप में इस प्रकार लिखें: