"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > माहिर पाइटेस्ट मंकीपैच: अपने परीक्षण को सरल बनाएं

माहिर पाइटेस्ट मंकीपैच: अपने परीक्षण को सरल बनाएं

2025-02-09 पर पोस्ट किया गया
ब्राउज़ करें:415

] एक सामान्य चुनौती यह है कि परीक्षणों के दौरान वस्तुओं और कार्यों के व्यवहार का मजाक या संशोधित कैसे किया जाए। यह वह जगह है जहां सबसे अधिक मंकेपैच स्थिरता चमकती है। यह परीक्षण के दौरान गतिशील रूप से आपके कोड के कुछ हिस्सों को बदलने के लिए एक लचीला तरीका प्रदान करता है।

] Mastering Pytest Monkeypatch: Simplify Your Testing

Monkeypatch क्या है?

]

कार्य या तरीके


वस्तुओं की विशेषताएं

पर्यावरण चर

] यह स्थायी परिवर्तन किए बिना विशिष्ट परिस्थितियों में मॉकिंग, ओवरराइडिंग निर्भरता, या परीक्षण कोड के लिए विशेष रूप से उपयोगी है।
  • क्यों मंकीपैच का उपयोग करें?
  • ]
  • ]
  • ]
]

]


Monkeypatch का उपयोग करने के उदाहरण

1। एक फ़ंक्शन का मजाक उड़ाना

    मान लीजिए कि आपके पास एक फ़ंक्शन है जो बाहरी एपीआई पर निर्भर करता है:
  1. # my_app.py def fetch_data (): # एक एपीआई कॉल का अनुकरण करें "वास्तविक एपीआई प्रतिक्रिया" लौटें
  2. ]
  3. # test_my_app.py my_app आयात fetch_data से DEF TEST_FETCH_DATA (MONKEYPATCH): def mock_fetch_data (): लौटें "मॉक्ड रिस्पांस" monkeypatch.setattr ("my_app.fetch_data", mock_fetch_data) fetch_data () == "नकली प्रतिक्रिया" का दावा करें
  4. 2। पर्यावरण चर को ओवरराइड करना
  5. कल्पना करें कि आप एक फ़ंक्शन का परीक्षण कर रहे हैं जो पर्यावरण चर पर निर्भर करता है:
  6. # config.py आयात ओएस def get_database_url (): OS.GetEnv ("database_url", "default_url") लौटें ]
  7. # test_config.py कॉन्फ़िगरेशन आयात get_database_url से def test_get_database_url (monkeypatch): monkeypatch.setenv ("database_url", "mocked_url") Assert get_database_url () == "mocked_url"

3। एक कक्षा में एक विधि का मजाक उड़ाना

यदि आपको अस्थायी रूप से कक्षा के भीतर एक विधि को बदलने की आवश्यकता है:

# my_class.py क्लास कैलकुलेटर: def Add (स्व, a, b): एक बी लौटाएं

एक नकली विधि के साथ व्यवहार का परीक्षण करें:
# my_app.py
def fetch_data():
    # Simulate an API call
    return "Real API Response"

# test_my_class.py my_class आयात कैलकुलेटर से DEF TEST_CALCULATER_ADD (MONKEYPATCH): def mock_add (स्व, ए, बी): 42 रिटर्न monkeypatch.setattr (कैलकुलेटर, "ADD", MOCK_ADD) calc = कैलकुलेटर () Calc.add (1, 2) == 42

4। अंतर्निहित कार्यों का मजाक उड़ाना
# test_my_app.py
from my_app import fetch_data

def test_fetch_data(monkeypatch):
    def mock_fetch_data():
        return "Mocked Response"

    monkeypatch.setattr("my_app.fetch_data", mock_fetch_data)

    assert fetch_data() == "Mocked Response"

# my_module.py def is_file_openable (फ़ाइल नाम): कोशिश करना: खुले (फ़ाइल नाम, "आर") के साथ: सही वापसी सिवाय ioerror: विवरण झूठा है

विभिन्न व्यवहारों का अनुकरण करने के लिए खुला नकली:

# config.py
import os

def get_database_url():
    return os.getenv("DATABASE_URL", "default_url")


बंदरों के साथ सर्वोत्तम अभ्यास

# my_app.py
def fetch_data():
    # Simulate an API call
    return "Real API Response"
]

अति उपयोग से बचें

"
"

# my_class.py
class Calculator:
    def add(self, a, b):
        return a   b
निष्कर्ष

] चाहे आप किसी फ़ंक्शन का मजाक उड़ा रहे हों, पर्यावरण चर को ओवरराइड कर रहे हों, या एज के मामलों का परीक्षण कर रहे हों, मंकीपैच आपके परीक्षण वर्कफ़्लो को काफी सरल कर सकते हैं।
] अधिक जानने के लिए आधिकारिक pytest प्रलेखन का अन्वेषण करें और Pytest की पूरी क्षमता को अनलॉक करें!

# test_my_class.py
from my_class import Calculator

def test_calculator_add(monkeypatch):
    def mock_add(self, a, b):
        return 42

    monkeypatch.setattr(Calculator, "add", mock_add)

    calc = Calculator()
    assert calc.add(1, 2) == 42

विज्ञप्ति वक्तव्य इस लेख को पुन: प्रस्तुत किया गया है: https://dev.to/mohamedabdelwahab/mastering-pytest-monkeypatch-simplify-your- testing-jj8?1 यदि कोई उल्लंघन है, तो कृपया इसे हटाने के लिए [email protected] से संपर्क करें।
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3