Penso che tu non voglia nascondere tutti gli avvisi, ma solo quelli che non sono rilevanti. E in questo caso, avvisi di deprecazione dai moduli Python importati.
Avendo una lettura della documentazione pytest su Warnings Capture :
Sia l'opzione -W della riga di comando che l'opzione filterwarnings ini sono basate sull'opzione -W e warnings.simplefilter di Python , quindi fai riferimento a quelle sezioni nella documentazione di Python per altri esempi e utilizzo avanzato.
Quindi puoi filtrare gli avvisi con l' -W
opzione di python !
Sembra che pytest
rimuova completamente i filtri, perché mostra tutti quelli in DeprecationWarning
esecuzione, e la documentazione di Python sui filtri di avviso predefiniti dice chiaramente:
Nelle build di rilascio regolari, il filtro di avviso predefinito ha le seguenti voci (in ordine di precedenza):
default::DeprecationWarning:__main__
ignore::DeprecationWarning
ignore::PendingDeprecationWarning
ignore::ImportWarning
ignore::ResourceWarning
Quindi nel tuo caso, se vuoi dire di filtrare i tipi di avviso che vuoi ignorare, come quelli DeprecationWarning
, esegui il comando pytest con l' -W
opzione:
$ pytest path-to-test-folder -W ignore::DeprecationWarning
EDIT : Dal commento di colini , è possibile filtrare per modulo. Esempio per ignorare gli avvisi di deprecazione da tutti sqlalchemy:
ignore::DeprecationWarning:sqlalchemy.*:
È quindi possibile elencare i moduli installati che creano troppo rumore nell'output di pytest
Utilizzare con file anziché nella riga di comando:
Potresti preferire elencare quei filtri nel file pytest.ini:
[pytest]
filterwarnings =
ignore::DeprecationWarning