Hypothesis – जनरेटिव टेस्टिंग: पायथन के लिए शक्तिशाली टूल

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

परिचय

सामान्य टेस्ट केवल यह जांचते हैं कि फंक्शन दिए गए इनपुट पर सही काम कर रहा है या नहीं। लेकिन क्या होगा अगर आप पहले से नहीं जानते कि कौन से इनपुट एरर का कारण बनेंगे? Hypothesis – जनरेटिव टेस्टिंग इस समस्या को अपने आप हल करता है।

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

Hypothesis क्या है

Hypothesis एक जनरेटिव टेस्टिंग टूल है, जो प्रॉपर्टी-बेस्ड टेस्टिंग के कॉन्सेप्ट पर आधारित है। यह लाइब्रेरी पारंपरिक टेस्टिंग की एक बुनियादी समस्या को हल करने के लिए बनाई गई थी: सभी संभावित इनपुट डेटा का पहले से अनुमान लगाने की असंभवता।

काम करने के मुख्य सिद्धांत

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

पारंपरिक टेस्टिंग से लाभ

  • ऑटोमैटिक एज केस कवरेज: Hypothesis अपने आप दुर्लभ और जटिल डेटा कॉम्बिनेशन ढूंढ लेता है
  • एरर मिनिमाइजेशन: जब कोई टेस्ट फेल होता है, तो वह अपने आप सबसे छोटे उदाहरण तक सिम्पल हो जाता है
  • उच्च प्रदर्शन: हजारों टेस्ट केस जनरेट करना बहुत तेज़ होता है
  • रीप्रोड्यूसिबिलिटी: मिली गई गलतियों को आसानी से दोबारा प्रस्तुत किया जा सकता है

इंस्टॉलेशन और पहले कदम

लाइब्रेरी इंस्टॉल करना

pip install hypothesis

अतिरिक्त सुविधाओं के लिए एक्सटेंशन के साथ इंस्टॉल कर सकते हैं:

pip install hypothesis[numpy,pandas,django]

बेसिक उपयोग का उदाहरण

from hypothesis import given
import hypothesis.strategies as st

@given(st.integers(), st.integers())
def test_addition_commutative(a, b):
    assert a + b == b + a

@given(st.integers(), st.integers())
def test_addition_associative(a, b, c):
    assert (a + b) + c == a + (b + c)

टेस्ट चलाना

टेस्ट को pytest, unittest या सीधे चलाया जा सकता है:

pytest test_file.py
python -m unittest test_file.py
python test_file.py

डेटा जनरेशन की मूल बातें

@given डेकोरेटर

डेकोरेटर @given() Hypothesis का मुख्य तत्व है। यह बताता है कि टेस्ट डेटा जनरेट करने के लिए किन स्ट्रेटेजी का उपयोग करना है।

@given(st.integers())
def test_absolute_value(x):
    assert abs(x) >= 0

@given(st.text(), st.integers(min_value=0))
def test_string_multiplication(s, n):
    result = s * n
    assert len(result) == len(s) * n

मॉड्यूल hypothesis.strategies

सभी डेटा जनरेशन स्ट्रेटेजी hypothesis.strategies मॉड्यूल में होती हैं, जिसे आमतौर पर st के रूप में इम्पोर्ट किया जाता है। यह मॉड्यूल विभिन्न डेटा प्रकारों के लिए कई पूर्वनिर्धारित स्ट्रेटेजी प्रदान करता है।

डेटा जनरेशन की स्ट्रेटेजी

बेसिक स्ट्रेटेजी

Hypothesis विभिन्न डेटा प्रकारों को जनरेट करने के लिए कई बिल्ट-इन स्ट्रेटेजी प्रदान करता है:

# संख्यात्मक प्रकार
st.integers()  # पूर्णांक
st.floats()    # फ्लोटिंग पॉइंट संख्याएं
st.decimals()  # दशमलव संख्याएं

# टेक्स्ट डेटा
st.text()      # यूनिकोड स्ट्रिंग्स
st.binary()    # बाइट स्ट्रिंग्स
st.characters() # अलग-अलग कैरेक्टर

# लॉग                    

अनुशंसाएँ