शून्य से एडवांस्ड टेस्टिंग तकनिःशुल्क

पाइटेस्ट

पहले assert से लेकर fixture, parametrize, mocking, coverage और अपना plugin लिखने तक — पायथन कोड को टेस्ट करने का पूरा रास्ता। हर अध्याय में छह चरण और आसान से कठिन दस प्रश्नों की क्विज़।

प्रत्येक अध्याय के छह चरण

  1. 1समस्या
  2. 2समझें
  3. 3उदाहरण
  4. 4अनुमान
  5. 5स्वयं करें
  6. 6चुनौती
  1. 00टेस्ट लिखने से पहले — असल में क्या चाहिएटेस्ट कोड से पहले की सोच: अस्पष्ट requirement को सटीक contract में बदलना, कोड को टेस्ट करने लायक बनाना, boundaries के साथ केस चुनना, कोड चलाए बिना अपेक्षित जवाब जानना, और तय करना कि क्या टेस्ट नहीं करना — सब सादे पायथन और assert से।50 मिनट१० प्रश्न
  2. 01pytest इंस्टॉल करना और आपका पहला टेस्टहाथ से जाँचना क्यों काम नहीं आता, खाली assert लगभग कुछ क्यों नहीं बताता, और pytest इंस्टॉल करके पहली टेस्ट फ़ाइल लिखना और चलाना। डॉट, सारांश लाइन, -q, -v और exit code पढ़ने के साथ।40 मिनट१० प्रश्न
  3. 02assert और फ़ेल्योर रिपोर्ट पढ़नाpytest एक साधारण assert के अंदर की वैल्यूज़ कैसे दिखाता है, फ़ेल्योर रिपोर्ट को लाइन-दर-लाइन कैसे पढ़ें, और कौन-सी तुलना लिखें ताकि रिपोर्ट सबसे ज़्यादा बताए।45 मिनट१० प्रश्न
  4. 03टेस्ट discovery और टेस्ट चलाना — pytest क्या चलाता है, और कैसे चुनेंpytest किन फ़ाइलों, फ़ंक्शनों और क्लासों को टेस्ट मानता है, src/ और tests/ layout में कोड import करना, node ID, और -k, -x, --lf, --ff, --co से ठीक वही चलाना जिसकी ज़रूरत है।45 मिनट१० प्रश्न
  5. 04एरर की टेस्टिंग — pytest.raisesएरर भी व्यवहार है, इसलिए उसका भी टेस्ट चाहिए। pytest.raises, DID NOT RAISE, सबक्लास मिलान, match= असल में regex क्यों है, excinfo से पकड़े गए एरर की जाँच, और with ब्लॉक में सिर्फ़ आख़िरी लाइन ही क्यों।45 मिनट१० प्रश्न
  6. 05फ़्लोट और pytest.approx — "काफ़ी क़रीब" की टेस्टिंग0.1 + 0.2 == 0.3 क्यों False है, pytest.approx डिफ़ॉल्ट रूप से कितना अंतर सहता है, rel और abs कब चाहिए, और पैसे के लिए approx नहीं बल्कि Decimal क्यों। साथ में NaN, बिना क्रम वाले नतीजे और टाइमस्टैम्प।35 मिनट१० प्रश्न
  7. 06parametrize — एक टेस्ट, कई केसकॉपी किए गए टेस्ट और टेस्ट के अंदर लूप की जगह @pytest.mark.parametrize। टेस्ट ID, ids= और pytest.param, decorator स्टैक करना, एक ही टेबल में वैल्यू और एरर, और आम गलतियाँ।45 मिनट१० प्रश्न
  8. 07Fixture — टेस्ट की तैयारी एक जगहएक ही setup बार-बार न लिखें: @pytest.fixture से एक बार लिखें, नाम से माँगें, हर टेस्ट में नई कॉपी पाएँ, और yield से सफ़ाई करें — टेस्ट fail होने पर भी।45 मिनट१० प्रश्न
  9. 08fixture का scope और conftest.py — सेटअप को सुरक्षित रूप से साझा करनाधीमा सेटअप एक बार बनाकर साझा करना: पाँच scopes, --setup-show, साझा state का ख़तरा और ScopeMismatch, बिना import के fixtures और डायरेक्टरी-वार override के लिए conftest.py, autouse की क़ीमत, और fixtures बनने का क्रम।50 मिनट१० प्रश्न
  10. 09built-in fixtures — tmp_path, capsys और caplogटेस्टिंग की झंझट वाली जगहों के लिए pytest के साथ आने वाले fixtures: फ़ाइलें, प्रिंट आउटपुट और लॉग। असली paths को छुए बिना CSV और JSON लिखने वाले कोड को टेस्ट करना, और यह जाँचना कि वह क्या प्रिंट और लॉग करता है।45 मिनट१० प्रश्न
  11. 10monkeypatch — environment, समय और नेटवर्क पर नियंत्रणEnvironment variables, घड़ी, randomness या नेटवर्क पर निर्भर कोड को टेस्ट करना। setenv, delenv, setattr, setitem, chdir, हर टेस्ट के बाद अपने-आप undo, "जहाँ खोजा जाता है वहाँ patch कीजिए" का नियम, और बिना patch के dependency injection।50 मिनट१० प्रश्न
  12. 11Mocking — बाहरी service को कैसे call किया गया, यह जाँचनाpayment या email client की जगह Mock रखकर जाँचना कि उसे कैसे call किया गया। return_value, side_effect, autospec, patch, mocker — और कब mock की जगह fake।50 मिनट१० प्रश्न
  13. 12Marker, skip और xfail — कौन सा टेस्ट कहाँ चलेskip, skipif, importorskip और xfail से हर टेस्ट की ज़रूरत और उम्मीद बताना; strict=True, raises= और XPASS का मतलब; अपने marker रजिस्टर करके -m से चुनना; साथ में parametrize किया fixture और factory fixture।50 मिनट१० प्रश्न
  14. 13कॉन्फ़िगरेशन और चेतावनियाँ — नियम एक फ़ाइल मेंहर रन पर वही फ़्लैग टाइप करना बंद कीजिए: प्रोजेक्ट के नियम pyproject.toml या pytest.ini में लिखिए — testpaths, addopts, pythonpath, markers, xfail_strict, log_cli — और pytest.warns, deprecated_call व filterwarnings से चेतावनियों को टेस्ट और नियंत्रित कीजिए।55 मिनट१० प्रश्न
  15. 14Coverage और CI — टेस्ट ने कौन-सी लाइनें कभी नहीं चलाईंpytest-cov से coverage मापना, Missing कॉलम पढ़ना, branch coverage, न्यूनतम सीमा लागू करना, pytest-xdist से टेस्ट समानांतर चलाना, और GitHub Actions में हर push पर पूरा सूट चलाना। साथ ही, 100% coverage का मतलब सही कोड क्यों नहीं है।50 मिनट१० प्रश्न
  16. 15async टेस्ट, hook और अपना pluginpytest-asyncio से async कोड की टेस्टिंग, फिर conftest.py में hook लिखकर pytest को बढ़ाना — --runslow फ़्लैग, marker, रिपोर्ट हेडर — और आख़िर में अपना plugin बनाकर pytester से उसकी टेस्टिंग।60 मिनट१० प्रश्न
  17. 16टेस्ट डिज़ाइन और TDD — अच्छा टेस्ट कैसा होता हैटेस्ट लिखने से पहले की योजना, Arrange-Act-Assert, implementation नहीं बल्कि व्यवहार को टेस्ट करना, red-green-refactor, Hypothesis के साथ property-based टेस्टिंग, flaky टेस्ट के कारण और इलाज, और हर बग के लिए एक regression टेस्ट।60 मिनट१० प्रश्न