Jak nakazać py.test pominąć określone katalogi?


91

Próbowałem użyć norecursedirsopcji wewnątrz setup.cfg, aby powiedzieć py.test, aby nie zbierał testów z niektórych katalogów, ale wygląda na to, że je ignoruje.

[tool:pytest]
norecursedirs=lib/third

Kiedy biegam py.test, widzę, jak to robi testy od wewnątrz lib/third!


Wygląda na to, że mam py.testi pytestobaj mają testy biegowe i są różnymi bestiami. Dziwne, ale pytestto zawodzi, ponieważ nie ładuje wykluczeń z [pytest].
sorin

1
pytestpochodzi z logilab. Chcesz py.test.
ecatmur

3
też spróbujnosecuredirs=lib/third/*
intelis

czy istnieje sposób na zignorowanie niektórych folderów w samym skrypcie za pomocą kodu?
bicepjai

2
skończyło się tutaj, ponieważ byłem ciekaw, dlaczego do cholery moje pytania dotyczące aplikacji internetowych w rozwoju lokalnym są tak ekstremalnie wolne ... Powodem był jakiś załadowany katalog zasobów z zagnieżdżoną strukturą yy / dd / mm ... powodując, że to naprawdę jest do bani! Na szczęście [pytest] norecursedirs = resourcesw pytest.inirobi trick 💪!
andilabs

Odpowiedzi:


85

py.test --ignore=somedir pracował dla mnie


5
I --ignoremożna określić wiele razy, aby ignorować wiele katalogów
phoenix

Jak pominąć niektóre testy zamiast katalogu
Rajat jain

Możesz skorzystać z tej -kopcji, jak pokazuje inna odpowiedź poniżej. Zobacz „Uruchamianie testów według wyrażeń słów kluczowych” na docs.pytest.org/en/latest/… . W tym przypadku pomocne mogą być również znaki. Oznacz swoje testy jako „wolne” itp., A następnie użyj-k "not slow"
shadfc

Możliwe jest również użycie--ignore-glob do ignorowania ścieżek plików testowych na podstawie symboli wieloznacznych w stylu powłoki Unix. Np. --ignore-glob=**/sandbox/*Zignoruje wszystkie pliki w dowolnym sandboxfolderze.
Jan M.

28

Jeśli masz kilka katalogów z różnymi rodzicami, możesz określić różne --ignoreparametry:

py.test --ignore=somedir --ignore=otherdir --ignore=etcdir

  • nowa opcja: --ignore uniemożliwi pobranie określonej ścieżki.
    Można określić wiele razy.

23

I rozwiązać tajemnicę: Jeśli sekcja pytest znajduje się w jednej z możliwych plików konfiguracyjnych ( pytest.ini, tox.inii setup.cfg), pytest nie będzie szukał wszelkich innych więc należy zdefiniować py.test opcje w jednym pliku.

Sugerowałbym użycie setup.cfg.


8
Dlaczego setup.cfg? Obecna dokumentacja wydaje się rekomendować pozostałe dwa
jebob

Myślę, że ważne jest, aby wspomnieć, że jeśli chcesz użyć .inipliku, musisz go określić za pomocą pytest -c pytest.ini. z jakiegoś powodu setup.cfgzawartość została odebrana automatycznie.
therightstuff


11

norecursedirspowinno działać. Sprawdź, czy masz plik pytest.ini lub inne pliki setup.cfg. Jak wzywasz py.test?


1
Mam setup.cfgw [pytest]środku właściwe i norecorsedirs, ale wydaje się, że jest ignorowany, a zamiast tego będzie szukał wszystkich plików.
sorin

8

W moim przypadku problemem był brakujący symbol wieloznaczny. U mnie działa:

[tool:pytest]
norecursedirs = subpath/*

podczas gdy po prostu norecursedirs = subpathnie.


To samo tutaj. Jednak bardzo dziwne zachowanie.
azmeuk


0

Aby użyć pytest.ini(co jest zalecane, chyba że używasz toxw tym przypadku tox.inima sens), zadzwoń pytestzpytest -c pytest.ini .

W celu zapobieżenia moje próbki not_me_1.pyi not_me_2.pyod badanego lub lintowane, moje pytest.inijest następujące:

[pytest]
addopts = --ignore-glob=not_me_*

[pycodestyle]
ignore = not_me_* ALL

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.