conftest
çözüm
Az invaziv çözüm adında boş bir dosya ekliyor conftest.py
içinde repo/
dizinde:
$ touch repo/conftest.py
Bu kadar. Mangling için özel kod yazmanıza sys.path
veya sürüklemeyi PYTHONPATH
veya __init__.py
ait 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
pytest
için görünüyor conftest
testi koleksiyonu modüllerin özel kancalar ve demirbaşlar toplamak ve onlardan özel nesneleri almak için için, pytest
ana dizini ekler conftest.py
içinsys.path
(bu durumda repo
dizinde).
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 src
düzeni (yer conftest.py
yer src
dir):
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 src
için PYTHONPATH
azaltır anlam ve yararlarını src
düzeni! Yüklü paketi değil kodu depodan test edeceksiniz. Yapmanız gerekiyorsa, belki de src
dir'e ihtiyacınız yoktur .
Buradan nereye gidilir
Tabii ki, conftest
modü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 pytest
hakkında birçok bilgiye sahiptir ; başlangıç : dizin başına yerel eklentilerconftest
conftest.py
Ayrıca, SO conftest
modüllerde mükemmel bir soruya sahiptir : py.test'te conftest.py dosyalarının kullanımı nedir?