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! आप भंडार से कोड का परीक्षण करने के साथ समाप्त हो जाएंगे न कि स्थापित पैकेज से। यदि आपको इसे करने की आवश्यकता है, तो हो सकता है कि आपको srcdir की आवश्यकता न हो ।
यहाँ से कहाँ जाएं
बेशक, conftestस्रोत कोड की खोज में मदद करने के लिए मॉड्यूल केवल कुछ फाइलें नहीं हैं; यह वह जगह है जहाँ pytestरूपरेखा के सभी परियोजना-विशिष्ट संवर्द्धन और आपके परीक्षण सूट का अनुकूलन होता है। मॉड्यूल pytestपर बहुत सारी जानकारी उनके डॉक्स मेंconftest बिखरी हुई है ; के साथ शुरू : स्थानीय प्रति निर्देशिका प्लगइन्सconftest.py
इसके अलावा, SO के conftestमॉड्यूल पर एक उत्कृष्ट प्रश्न है : py.test में, conftest.py फ़ाइलों का क्या उपयोग है?