conftest çözüm
Az invaziv çözüm adında boş bir dosya ekliyor conftest.pyiçinde repo/dizinde:
$ touch repo/conftest.py
Bu kadar. Mangling için özel kod yazmanıza sys.pathveya sürüklemeyi PYTHONPATHveya __init__.pyait olmadığı yerlere yerleştirmeyi unutmayın .
Ardından proje dizini:
repo
├── conftest.py
├── app.py
├── settings.py
├── models.py
└── tests
└── test_app.py
açıklama
pytestiçin görünüyor conftesttesti koleksiyonu modüllerin özel kancalar ve demirbaşlar toplamak ve onlardan özel nesneleri almak için için, pytestana dizini ekler conftest.pyiçinsys.path (bu durumda repodizinde).
Diğer proje yapıları
Eğer diğer proje yapınız varsa, koyun conftest.py(böylece vermez, paketleri içerir ancak bir paket kendisi değil one paket kök dir değil bir içerirler __init__.pyörneğin,):
repo
├── conftest.py
├── spam
│ ├── __init__.py
│ ├── bacon.py
│ └── egg.py
├── eggs
│ ├── __init__.py
│ └── sausage.py
└── tests
├── test_bacon.py
└── test_egg.py
src Yerleşim
Bu yaklaşım ile kullanılabilse de srcdüzeni (yer conftest.pyyer srcdir):
repo
├── src
│ ├── conftest.py
│ ├── spam
│ │ ├── __init__.py
│ │ ├── bacon.py
│ │ └── egg.py
│ └── eggs
│ ├── __init__.py
│ └── sausage.py
└── tests
├── test_bacon.py
└── test_egg.py
ekleyerek sakının srciçin PYTHONPATHazaltır anlam ve yararlarını srcdüzeni! Yüklü paketi değil kodu depodan test edeceksiniz. Yapmanız gerekiyorsa, belki de srcdir'e ihtiyacınız yoktur .
Buradan nereye gidilir
Tabii ki, conftestmodüller sadece kaynak kod bulmaya yardımcı olan bazı dosyalar değildir; pytestçerçevede projeye özgü tüm geliştirmelerin ve test paketinizin özelleştirilmesinin gerçekleştiği yer burasıdır . belgeleri boyunca dağılmış modüller pytesthakkında birçok bilgiye sahiptir ; başlangıç : dizin başına yerel eklentilerconftestconftest.py
Ayrıca, SO conftestmodüllerde mükemmel bir soruya sahiptir : py.test'te conftest.py dosyalarının kullanımı nedir?