पैरामीटराइज़ेशन और परीक्षण कवरेज
@pytest.mark.parametrize का उपयोग करके कई इनपुट के साथ परीक्षण चलाएँ।
पैरामीटराइज़ेशन और परीक्षण कवरेज, 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) == resultparametrize डेकोरेटर को एक के ऊपर एक लगाना
इनपुट का कार्तीय गुणनफल प्राप्त करने के लिए दो 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 Falseparametrize और कवरेज को मिलाना
पैरामीटरयुक्त परीक्षण एक ही परीक्षण परिभाषा से कोड के कई पथों को चलाकर स्वाभाविक रूप से कवरेज बढ़ाते हैं।
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 पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- अपने पहले pytest परीक्षण लिखना
- Fixtures और सेटअप/टियरडाउन
- पैरामीटराइज़ेशन और परीक्षण कवरेज
- unittest.mock से मॉकिंग