conftest
उपाय
कम से कम इनवेसिव समाधान निर्देशिका conftest.py
में नामित एक खाली फ़ाइल जोड़ रहा है repo/
:
$ touch repo/conftest.py
बस। मैनलिंग करने के लिए कस्टम कोड लिखने की आवश्यकता नहीं है sys.path
या याद रखना कि PYTHONPATH
साथ खींचें , या __init__.py
डायर में रखें जहां यह नहीं है।
परियोजना निर्देशिका बाद में:
repo
├── conftest.py
├── app.py
├── settings.py
├── models.py
└── tests
└── test_app.py
व्याख्या
pytest
के लिए दिखता conftest
परीक्षण संग्रह पर मॉड्यूल कस्टम हुक और जुड़नार इकट्ठा करने के लिए, और आदेश उन लोगों से कस्टम वस्तुओं को आयात करने में, pytest
की पेरेंट निर्देशिका कहते हैं conftest.py
करने के लिएsys.path
(इस मामले में repo
निर्देशिका)।
अन्य परियोजना संरचनाएं
यदि आपके पास अन्य प्रोजेक्ट संरचना है, conftest.py
तो पैकेज को रूट रूट में रखें (वह जिसमें पैकेज होते हैं, लेकिन पैकेज स्वयं नहीं है, इसलिए इसमें शामिल नहीं है __init__.py
), उदाहरण के लिए:
repo
├── conftest.py
├── spam
│ ├── __init__.py
│ ├── bacon.py
│ └── egg.py
├── eggs
│ ├── __init__.py
│ └── sausage.py
└── tests
├── test_bacon.py
└── test_egg.py
src
ख़ाका
हालाँकि इस दृष्टिकोण का उपयोग src
लेआउट के साथ किया जा सकता है ( dir conftest.py
में जगह src
):
repo
├── src
│ ├── conftest.py
│ ├── spam
│ │ ├── __init__.py
│ │ ├── bacon.py
│ │ └── egg.py
│ └── eggs
│ ├── __init__.py
│ └── sausage.py
└── tests
├── test_bacon.py
└── test_egg.py
खबरदार कि लेआउट के अर्थ और लाभों src
को PYTHONPATH
कम करने के लिए जोड़ना src
! आप भंडार से कोड का परीक्षण करने के साथ समाप्त हो जाएंगे न कि स्थापित पैकेज से। यदि आपको इसे करने की आवश्यकता है, तो हो सकता है कि आपको src
dir की आवश्यकता न हो ।
यहाँ से कहाँ जाएं
बेशक, conftest
स्रोत कोड की खोज में मदद करने के लिए मॉड्यूल केवल कुछ फाइलें नहीं हैं; यह वह जगह है जहाँ pytest
रूपरेखा के सभी परियोजना-विशिष्ट संवर्द्धन और आपके परीक्षण सूट का अनुकूलन होता है। मॉड्यूल pytest
पर बहुत सारी जानकारी उनके डॉक्स मेंconftest
बिखरी हुई है ; के साथ शुरू : स्थानीय प्रति निर्देशिका प्लगइन्सconftest.py
इसके अलावा, SO के conftest
मॉड्यूल पर एक उत्कृष्ट प्रश्न है : py.test में, conftest.py फ़ाइलों का क्या उपयोग है?