Python Academy · पाठ

पैरामीटराइज़ेशन और परीक्षण कवरेज

@pytest.mark.parametrize का उपयोग करके कई इनपुट के साथ परीक्षण चलाएँ।

पाठ 3, कुल 4 में से13 चरण

पैरामीटराइज़ेशन और परीक्षण कवरेज, CoddyKit पर Python Academy का एक निःशुल्क पाठ है। यह 4 में से 3वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह Python Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Python Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

@pytest.mark.parametrize

उसी परीक्षण को कई इनपुट के साथ चलाने के लिए @pytest.mark.parametrize का उपयोग करें। प्रत्येक टपल एक अलग परीक्षण मामला है।

import pytest

@pytest.mark.parametrize("a,b,expected", [
    (1, 2, 3),
    (0, 0, 0),
    (-1, 1, 0),
    (10, -5, 5),
])
def test_add(a, b, expected):
    assert a + b == expected

एकल पैरामीटर

एकल आर्ग्युमेंट के लिए मानों की सूची सीधे पास करें।

import pytest

@pytest.mark.parametrize("n", [1, 2, 3, 4, 5])
def test_positive(n):
    assert n > 0

नामित परीक्षण आईडी

अधिक स्पष्ट आउटपुट के लिए हर पैरामीटर सेट को लेबल करने हेतु ids की सूची दें।

import pytest

@pytest.mark.parametrize("value,result", [
    (2, True),
    (3, False),
], ids=["even", "odd"])
def test_is_even(value, result):
    assert (value % 2 == 0) == result

parametrize डेकोरेटर को एक के ऊपर एक लगाना

इनपुट का कार्तीय गुणनफल प्राप्त करने के लिए दो parametrize डेकोरेटर एक के ऊपर एक लगाएँ।

import pytest

@pytest.mark.parametrize("x", [1, 2])
@pytest.mark.parametrize("y", [10, 20])
def test_product(x, y):
    assert x * y > 0   # 4 test cases: (1,10),(1,20),(2,10),(2,20)

pytest-cov: इंस्टॉल करना

आपके कोड की कौन-सी पंक्तियाँ परीक्षणों द्वारा निष्पादित की जाती हैं, यह मापने के लिए pytest-cov इंस्टॉल करें।

# pip install pytest-cov

# Basic usage:
# pytest --cov=mypackage

# HTML report:
# pytest --cov=mypackage --cov-report=html

कवरेज आउटपुट पढ़ना

कोड कवरेज बताता है कि परीक्षण के दौरान कौन-सी पंक्तियाँ, शाखाएँ या कथन तक पहुँचा नहीं गया।

# Name          Stmts   Miss  Cover
# -------       -----   ----  -----
# mypackage/utils.py  20       3    85%
#
# Missing: lines 45, 67, 88

शाखा कवरेज

सशर्त कथनों की दोनों शाखाओं का परीक्षण हुआ है या नहीं, यह ट्रैक करने के लिए --cov-branch का उपयोग करें।

# pytest --cov=mypackage --cov-branch

def is_positive(n):
    if n > 0:        # branch 1: True
        return True
    return False     # branch 2: False

कम कवरेज पर बिल्ड विफल करना

कवरेज N प्रतिशत से नीचे गिरने पर बिल्ड विफल करने के लिए --cov-fail-under=N का उपयोग करें।

# pytest --cov=mypackage --cov-fail-under=80
# FAIL Required test coverage of 80% not reached. Total: 72%

.coveragerc कॉन्फ़िगरेशन

बॉयलरप्लेट कोड छोड़ने के लिए .coveragerc में कवरेज बहिष्करण कॉन्फ़िगर करें।

# .coveragerc
[run]
omit =
    */migrations/*
    */tests/*
    setup.py

[report]
exclude_lines =
    pragma: no cover
    if TYPE_CHECKING:

अच्छा कवरेज क्या होता है

अधिक कवरेज सही परीक्षणों की गारंटी नहीं देता। केवल पंक्तियाँ चल जाने पर नहीं, बल्कि अर्थपूर्ण दावों पर ध्यान दें। अधिकांश परियोजनाओं के लिए 80-90% एक व्यावहारिक लक्ष्य है।

# A covered but useless test:
def test_nothing():
    is_positive(5)   # no assert — 100% coverage, zero confidence

# A meaningful test:
def test_positive():
    assert is_positive(5) is True
    assert is_positive(-1) is False

parametrize और कवरेज को मिलाना

पैरामीटरयुक्त परीक्षण एक ही परीक्षण परिभाषा से कोड के कई पथों को चलाकर स्वाभाविक रूप से कवरेज बढ़ाते हैं।

import pytest

@pytest.mark.parametrize("n,expected", [
    (5, True), (-1, False), (0, False)
])
def test_is_positive(n, expected):
    assert is_positive(n) == expected

त्वरित जाँच

pytest के दौरान --cov-fail-under=90 क्या करता है?

पुनरावलोकन

कई इनपुट का साफ़-सुथरे ढंग से परीक्षण करने के लिए @pytest.mark.parametrize का उपयोग करें। pytest-cov से कोड कवरेज मापें, --cov-branch से शाखाओं को ट्रैक करें और --cov-fail-under से न्यूनतम सीमा लागू करें।

शुरुआत निःशुल्क

एआई शिक्षक के साथ Python सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
76
पाठ
320

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

क्या “पैरामीटराइज़ेशन और परीक्षण कवरेज” पाठ निःशुल्क है?

हाँ—“पैरामीटराइज़ेशन और परीक्षण कवरेज” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और Python Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। Python Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“पैरामीटराइज़ेशन और परीक्षण कवरेज” में मैं क्या सीखूँगा?

@pytest.mark.parametrize का उपयोग करके कई इनपुट के साथ परीक्षण चलाएँ। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Python Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या Python Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Python Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 3वाँ पाठ है।

“पैरामीटराइज़ेशन और परीक्षण कवरेज” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस Python Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर Python Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. अपने पहले pytest परीक्षण लिखना
  2. Fixtures और सेटअप/टियरडाउन
  3. पैरामीटराइज़ेशन और परीक्षण कवरेज
  4. unittest.mock से मॉकिंग
← Python Academy पर वापस जाएँ