unittest के साथ टेस्टिंग का परिचय
टेस्टिंग सॉफ्टवेयर डेवलपमेंट प्रक्रिया का एक मूलभूत हिस्सा है, जो कोड की विश्वसनीयता और गुणवत्ता सुनिश्चित करता है। Python इकोसिस्टम में, unittest मॉड्यूल स्वचालित टेस्ट बनाने और चलाने के लिए एक मानक समाधान के रूप में काम करता है।
UnitTest Python की एक अंतर्निहित लाइब्रेरी है, जो xUnit आर्किटेक्चर पर आधारित है। यह डेवलपर्स को यूनिट टेस्ट बनाने, बिज़नेस लॉजिक की जांच करने और फंक्शन तथा क्लासेस के कामकाज को नियंत्रित करने के लिए टूल्स का एक पूरा सेट प्रदान करता है। इसका सबसे बड़ा फायदा यह है कि यह Python की स्टैंडर्ड लाइब्रेरी का हिस्सा है और इसे अलग से इंस्टॉल करने की जरूरत नहीं है।
unittest क्या है और इसकी आवश्यकता क्यों है
Unittest Python में टेस्ट लिखने और चलाने का एक फ्रेमवर्क है, जो test-driven development (TDD) के सिद्धांतों का पालन करता है। यह दोहराए जाने योग्य, अलग-थलग और स्वचालित टेस्ट बनाने में मदद करता है, जो निम्नलिखित में सहायक होते हैं:
- डेवलपमेंट के शुरुआती चरणों में त्रुटियों का पता लगाना
- रीफैक्टरिंग के दौरान कोड की स्थिरता सुनिश्चित करना
- फंक्शन के अपेक्षित व्यवहार का दस्तावेजीकरण करना
- सॉफ्टवेयर उत्पाद की गुणवत्ता में विश्वास बढ़ाना
unittest के साथ काम करने की मूल बातें
टेस्ट की बुनियादी संरचना
unittest के साथ शुरुआत करने के लिए, मॉड्यूल को इम्पोर्ट करें और एक टेस्ट क्लास बनाएं:
import unittest
class TestMath(unittest.TestCase):
def test_add(self):
self.assertEqual(2 + 3, 5)
def test_multiply(self):
self.assertEqual(4 * 5, 20)
if __name__ == '__main__':
unittest.main()
संरचना के प्रमुख सिद्धांत
प्रत्येक टेस्ट क्लास को unittest.TestCase से इनहेरिट करना चाहिए। सभी टेस्ट मेथड्स test_ प्रीफिक्स से शुरू होते हैं, जिससे फ्रेमवर्क स्वचालित रूप से टेस्ट को खोज और निष्पादित कर सकता है। unittest.main() मेथड वर्तमान मॉड्यूल में सभी पाए गए टेस्ट को चलाता है।
टेस्ट का जीवनचक्र और फिक्स्चर
सेटअप और क्लीनअप मेथड्स
Unittest टेस्ट वातावरण तैयार करने और साफ करने के लिए विशेष मेथड्स प्रदान करता है:
class TestDatabase(unittest.TestCase):
@classmethod
def setUpClass(cls):
"""क्लास के सभी टेस्ट से पहले एक बार चलता है"""
cls.db_connection = create_test_database()
@classmethod
def tearDownClass(cls):
"""क्लास के सभी टेस्ट के बाद एक बार चलता है"""
cls.db_connection.close()
def setUp(self):
"""प्रत्येक टेस्ट से पहले चलता है"""
self.test_data = ["item1", "item2", "item3"]
def tearDown(self):
"""प्रत्येक टेस्ट के बाद चलता है"""
self.test_data.clear()
फिक्स्चर के स्तर
Unittest में फिक्स्चर विभिन्न स्तरों पर काम करते हैं:
setUp()औरtearDown()- प्रत्येक टेस्ट के लिए अलग-अलगsetUpClass()औरtearDownClass()- पूरे टेस्ट क्लास के लिएsetUpModule()औरtearDownModule()- पूरे मॉड्यूल के लिए
असर्शन मेथड्स (Assertions)
जांच के मुख्य तरीके
Unittest विभिन्न प्रकार की जांचों के लिए मेथड्स का एक समृद्ध सेट प्रदान करता है:
| मेथड | विवरण | उपयोग का उदाहरण |
|---|---|---|
assertEqual(a, b) |
a और b की समानता की जांच करता है | self.assertEqual(2+2, 4) |
assertNotEqual(a, b) |
a और b की असमानता की जांच करता है | self.assertNotEqual(2+2, 5) |
assertTrue(x) |
x के सत्य होने की जांच करता है | self.assertTrue(5 > 3) |
assertFalse(x) |
x के असत्य होने की जांच करता है | self.assertFalse(5 < 3) |
पुस्तकालय में भी
जावास्क्रिप्ट (Node.js) पर PDF रिपोर्ट जनरेशन: Puppeteer, PDFKit, jsPDF
Node.js में YAML के साथ काम करना: पार्सिंग, जनरेशन और वैलिडेशन
कोटलिन में डेटाबेस माइग्रेशन: उपकरणों और दृष्टिकोणों का अवलोकन
TypeScript में CLI एप्लिकेशन बनाना: फ्रेमवर्क और टूल्स का अवलोकन
Go (Golang) पर go-qrcode लाइब्रेरी के साथ QR कोड जनरेटर