Fixtures और सेटअप/टियरडाउन
साझा परीक्षण स्थिति और संसाधन सेटअप के लिए fixtures का उपयोग करें।
Fixtures और सेटअप/टियरडाउन, CoddyKit पर Python Academy का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह Python Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Python Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
फ़िक्स्चर क्या होते हैं?
फ़िक्स्चर वे फ़ंक्शन होते हैं जिन्हें @pytest.fixture से सजाया जाता है और जो परीक्षण की निर्भरताएँ उपलब्ध कराते हैं। pytest उन्हें नाम के आधार पर इंजेक्ट करता है।
import pytest
@pytest.fixture
def user():
return {"name": "Alice", "age": 30}
def test_name(user):
assert user["name"] == "Alice"yield के साथ सेटअप और समापन
सेटअप (yield से पहले) और समापन (yield के बाद) को अलग करने के लिए किसी फ़िक्स्चर के अंदर फ़िक्स्चर का मान yield करें।
import pytest
@pytest.fixture
def db_connection():
conn = create_connection() # setup
yield conn
conn.close() # teardown
def test_query(db_connection):
result = db_connection.query("SELECT 1")
assert result is not Noneफ़िक्स्चर के दायरे
फ़िक्स्चर कितनी बार बनाया जाए, इसे scope से नियंत्रित करें: function (डिफ़ॉल्ट), class, module, session।
import pytest
@pytest.fixture(scope="module")
def expensive_resource():
print("\nSetup once per module")
yield object()
print("\nTeardown once per module")conftest.py के ज़रिए फ़िक्स्चर साझा करना
फ़िक्स्चर को conftest.py में रखें, ताकि आयात किए बिना उन्हें सभी परीक्षण फ़ाइलों में साझा किया जा सके।
# conftest.py
import pytest
@pytest.fixture
def config():
return {"env": "test", "debug": True}
# test_app.py
def test_env(config):
assert config["env"] == "test"फ़िक्स्चर की निर्भरताएँ
फ़िक्स्चर को पैरामीटर के रूप में सूचीबद्ध करके वे अन्य फ़िक्स्चर पर निर्भर हो सकते हैं।
import pytest
@pytest.fixture
def base_url():
return "http://localhost:8000"
@pytest.fixture
def api_client(base_url):
return Client(base_url)
def test_get(api_client):
resp = api_client.get("/health")
assert resp.status_code == 200autouse फ़िक्स्चर
किसी फ़िक्स्चर को दायरे के सभी परीक्षणों पर लागू करने के लिए autouse=True सेट करें, और उसे पैरामीटर के रूप में सूचीबद्ध करने की आवश्यकता नहीं होगी।
import pytest
@pytest.fixture(autouse=True)
def reset_env(monkeypatch):
monkeypatch.setenv("ENVIRONMENT", "test")
def test_env():
import os
assert os.environ["ENVIRONMENT"] == "test"tmp_path फ़िक्स्चर
pytest प्रति परीक्षण एक नई अस्थायी डायरेक्टरी देने वाला अंतर्निर्मित फ़िक्स्चर tmp_path उपलब्ध कराता है।
def test_write_file(tmp_path):
f = tmp_path / "hello.txt"
f.write_text("hello")
assert f.read_text() == "hello"monkeypatch फ़िक्स्चर
monkeypatch आपको किसी परीक्षण के दौरान एट्रिब्यूट, पर्यावरण चरों या डिक्शनरी प्रविष्टियों को अस्थायी रूप से बदलने देता है।
def get_env():
import os
return os.environ.get("MODE", "prod")
def test_mode(monkeypatch):
monkeypatch.setenv("MODE", "test")
assert get_env() == "test"capsys फ़िक्स्चर
capsys परीक्षणों के दौरान stdout और stderr आउटपुट को कैप्चर करता है।
def greet(name):
print(f"Hello, {name}!")
def test_greet(capsys):
greet("Alice")
out, err = capsys.readouterr()
assert out == "Hello, Alice!\n"request.addfinalizer से फ़िक्स्चर की अंतिम क्रियाएँ
yield का एक विकल्प: request.addfinalizer से सफ़ाई की क्रिया पंजीकृत करें।
import pytest
@pytest.fixture
def resource(request):
r = acquire_resource()
request.addfinalizer(r.release)
return rपैरामीटरयुक्त फ़िक्स्चर
किसी फ़िक्स्चर में params का उपयोग करके, उस पर निर्भर हर परीक्षण को प्रत्येक पैरामीटर मान के लिए एक बार चलाएँ।
import pytest
@pytest.fixture(params=["sqlite", "postgres"])
def db(request):
return create_db(request.param)
def test_insert(db):
db.insert({"id": 1})
assert db.count() == 1त्वरित जाँच
किस फ़िक्स्चर दायरे में पूरे परीक्षण सत्र के लिए फ़िक्स्चर केवल एक बार बनाया जाता है?
पुनरावलोकन
फ़िक्स्चर yield के ज़रिए पुन:प्रयोग योग्य सेटअप और सफ़ाई उपलब्ध कराते हैं। जीवनकाल नियंत्रित करने के लिए scope, साझा करने के लिए conftest.py, और निहित रूप से लागू करने के लिए autouse=True का उपयोग करें।
एआई शिक्षक के साथ Python सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 76
- पाठ
- 320
अक्सर पूछे जाने वाले प्रश्न
क्या “Fixtures और सेटअप/टियरडाउन” पाठ निःशुल्क है?
हाँ—“Fixtures और सेटअप/टियरडाउन” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और Python Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। Python Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“Fixtures और सेटअप/टियरडाउन” में मैं क्या सीखूँगा?
साझा परीक्षण स्थिति और संसाधन सेटअप के लिए fixtures का उपयोग करें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Python Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या Python Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Python Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।
“Fixtures और सेटअप/टियरडाउन” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस Python Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर Python Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- अपने पहले pytest परीक्षण लिखना
- Fixtures और सेटअप/टियरडाउन
- पैरामीटराइज़ेशन और परीक्षण कवरेज
- unittest.mock से मॉकिंग