Existe-t-il un moyen de supprimer les avertissements de dépréciation internes du pytest?
Contexte: Je cherche à évaluer la difficulté de porter une suite de tests de nose
à pytest
. La suite est assez grande et utilise beaucoup de générateurs de test basés sur nose
-style yield
.
J'aimerais d'abord m'assurer que les tests existants réussissent avec pytest, et ensuite peut-être remplacer les générateurs de test par parameterized
.
Il suffit de courir $ pytest path-to-test-folder
avec pytest 3.0.4 est complètement dominé par les pages et les pages de
WC1 ~repos/numpy/numpy/lib/tests/test_twodim_base.py yield tests are deprecated, and scheduled to be removed in pytest 4.0
Existe-t-il un moyen de désactiver ces avertissements?
De pytest --help
:
--disable-pytest-warnings
disable warnings summary, overrides -r w flag
pytest -p no:warnings
ou ajoutez ce qui suit à votre pytest.ini ou tox.ini:
[pytest]
addopts = -p no:warnings
Le résultat sera vert sans aucune indication d'avertissement (à moins que les tests échouent bien sûr).
Voir https://docs.pytest.org/fr/latest/warnings.html#disabling-warnings-summary
Je pense que vous ne voulez pas masquer tous les avertissements, mais seulement ceux qui ne sont pas pertinents. Et dans ce cas, les avertissements de dépréciation des modules importés python.
Avoir lu la documentation de pytest sur Warnings Capture :
Les options de ligne de commande -W et filterwarnings ini sont toutes deux basées sur les propres (option -W) et warnings.simplefilter de Python. Veuillez vous reporter à ces sections Python pour d’autres exemples et une utilisation avancée.
Ainsi, vous pouvez filtrer les avertissements avec -W
option!
Il semble que pytest
supprime complètement les filtres, car il montre tous ces DeprecationWarning
lors de l'exécution, et la documentation de Python sur filtres d'avertissement par défaut indique clairement:
Dans les versions de version standard, le filtre d'avertissement par défaut comporte les entrées suivantes (par ordre de priorité):
default::DeprecationWarning:__main__ ignore::DeprecationWarning ignore::PendingDeprecationWarning ignore::ImportWarning ignore::ResourceWarning
Donc, dans votre cas, si vous voulez laisser filtrer les types d’avertissements que vous voulez ignorer, tels que ceux DeprecationWarning
, il suffit d’exécuter la commande pytest avec -W
option:
$ pytest path-to-test-folder -W ignore::DeprecationWarning
[~ # ~] éditer [~ # ~] : à partir du commentaire de colini , il est possible de filtrer par module . Exemple pour ignorer les avertissements de dépréciation de tout sqlalchemy:
ignore::DeprecationWarning:sqlalchemy.*:
Vous pouvez ensuite lister vos modules installés qui créent trop de bruit dans la sortie de pytest
Utilisez avec fichier plutôt qu'en ligne de commande:
Vous préférerez peut-être lister ces filtres dans le fichier pytest.ini:
[pytest]
filterwarnings =
ignore::DeprecationWarning
Je ne veux pas cacher tous les avertissements, alors j'ai mis ceci dans pytest.ini
[pytest]
filterwarnings =
ignore::DeprecationWarning