Czy istnieje sposób na pominięcie wewnętrznych ostrzeżeń pytest o przestarzałe?
Kontekst: chcę ocenić trudność przenoszenia zestawu testów z nose
do pytest
. Zestaw jest dość duży i intensywnie używa generatorów testów opartych na nose
stylu yield
.
Chciałbym najpierw upewnić się, że istniejące testy przeszły pomyślnie z pytest, a następnie może zmienić generatory testów na parameterized
.
Samo uruchomienie $ pytest path-to-test-folder
z pytest 3.0.4 jest całkowicie zdominowane przez strony i strony
WC1 ~repos/numpy/numpy/lib/tests/test_twodim_base.py yield tests are deprecated, and scheduled to be removed in pytest 4.0
Czy istnieje sposób na wyłączenie tych ostrzeżeń?
pytest -p no:warnings
lub dodaj następujące elementy do swojego pytest.ini lub tox.ini:Wynik będzie zielony bez żadnych ostrzeżeń. Zobacz dokumentację pod adresem https://docs.pytest.org/en/latest/warnings.html#disiring-warnings-summary .
Może to być prawidłowy przypadek użycia zestawu testów, w którym chcesz uzyskać czysty wynik.
Należy pamiętać, że zawsze ukrywanie wszystkich ostrzeżeń może spowodować pominięcie ważnych ostrzeżeń. Jeśli chcesz ukryć tylko określone ostrzeżenia, spójrz na odpowiedź Cloca .
źródło
addopts = -p no:warnings
to NAPRAWDĘ ZŁY pomysł, a rozwiązanie CloC jest dużo rozsądniejsze, ale musiałem użyć twojego, gdyignore::InsecureRequestWarning
nie został rozpoznany, więc ty też dostajesz +1Myślę, że nie chcesz ukrywać wszystkich ostrzeżeń, ale tylko te, które nie są istotne. W tym przypadku ostrzeżenia o dezaktualizacji z zaimportowanych modułów Pythona.
Po przeczytaniu o pytest dokumentacji dotyczącej programu Warnings Capture :
Możesz więc filtrować ostrzeżenia za pomocą
-W
opcji Pythona !Wygląda na to, że
pytest
całkowicie usuwa filtry, ponieważ pokazuje je wszystkieDeprecationWarning
podczas działania, a dokumentacja Pythona dotycząca domyślnych filtrów ostrzegawczych wyraźnie mówi:Więc w twoim przypadku, jeśli chcesz, powiedzmy, filtrować typy ostrzeżeń, które chcesz zignorować, takie jak te
DeprecationWarning
, po prostu uruchom polecenie pytest z-W
opcją:EDYCJA : Z komentarza coliniego można filtrować według modułu. Przykład ignorowania ostrzeżeń o wycofaniu ze wszystkich sqlalchemy:
Następnie możesz wyświetlić listę zainstalowanych modułów, które generują zbyt dużo szumu na wyjściu
pytest
Użyj z plikiem zamiast w wierszu poleceń:
Możesz preferować listę tych filtrów w pliku pytest.ini:
źródło
ignore::DeprecationWarning:sqlalchemy.*:
ignore:.*U.*mode is deprecated:DeprecationWarning
ignoruje wszystkie ostrzeżenia typu DeprecationWarning, w których początek wiadomości jest zgodny z wyrażeniem regularnym „. * Tryb * U. * jest przestarzały”. więcej informacjiW pliku pytest.ini możesz dodać:
LUB przejście poniżej linii w linii poleceń. Może to być przydatne, jeśli zestawy testów obsługują ostrzeżenia przy użyciu systemu zewnętrznego.
LUB jeśli chcesz tylko ukryć określone przestarzałe ostrzeżenie, dodaj poniższą instrukcję w swoim pliku pytest.ini
[pytest] filterwarnings = ignore:.*U.*mode is deprecated:DeprecationWarning
Spowoduje to zignorowanie wszystkich ostrzeżeń typu DeprecationWarning, w których początek wiadomości jest zgodny z wyrażeniem regularnym „. * Tryb * U. * jest przestarzały”.
LUB Chociaż nie jest to zalecane, możesz użyć
opcja wiersza polecenia, która całkowicie pomija podsumowanie ostrzeżenia z danych wyjściowych przebiegu testowego.
źródło
Nie chcę ukrywać wszystkich ostrzeżeń, więc wstawiam to
pytest.ini
źródło