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
vers pytest
. La suite est assez grande et utilise beaucoup nose
-style yield
générateurs de test basés.
Je voudrais d'abord m'assurer que les tests existants réussissent avec pytest, puis peut-être changer les générateurs de test en parameterized
.
Le $ pytest path-to-test-folder
simple fonctionnement 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?
pytest -p no:warnings
, ou ajoutez ce qui suit à votre pytest.ini ou tox.ini:Le résultat sera vert sans aucune indication d'avertissement. Consultez la documentation sur https://docs.pytest.org/en/latest/warnings.html#disabling-warnings-summary .
Cela peut être un cas d'utilisation valide pour une suite de tests où vous voulez une sortie propre.
Sachez que toujours cacher tous les avertissements peut vous faire manquer des avertissements importants. Si vous souhaitez masquer uniquement des avertissements spécifiques, regardez la réponse de Cloc .
la source
addopts = -p no:warnings
est VRAIMENT MAUVAISE idée, et la solution CloC est beaucoup plus saine, mais j'ai dû utiliser la vôtre lorsqu'elleignore::InsecureRequestWarning
n'était pas reconnue, vous obtenez donc +1 aussiJe pense que vous ne voulez pas cacher tous les avertissements, mais seulement ceux qui ne sont pas pertinents. Et dans ce cas, les avertissements de dépréciation des modules python importés.
Lire la documentation pytest sur Warnings Capture :
Ainsi, vous pouvez filtrer les avertissements avec python
-W
option !Il semble que cela
pytest
supprime complètement les filtres, car il montre tous ceuxDeprecationWarning
lors de l'exécution, et la documentation de Python sur les filtres d'avertissement par défaut dit clairement:Donc, dans votre cas, si vous voulez laisser dire à filtrer les types d'avertissement que vous souhaitez ignorer, tels que ceux-ci
DeprecationWarning
, exécutez simplement la commande pytest avec l'-W
option:EDIT : A partir du commentaire de colini , il est possible de filtrer par module. Exemple pour ignorer les avertissements d'obsolescence de tous les sqlalchemy:
Vous pouvez ensuite lister vos modules installés qui créent trop de bruit dans la sortie de
pytest
À utiliser avec un fichier plutôt qu'en ligne de commande:
Vous pouvez préférer lister ces filtres dans le fichier pytest.ini:
la source
ignore::DeprecationWarning:sqlalchemy.*:
Dans le fichier pytest.ini, vous pouvez ajouter:
OU en passant sous la ligne dans la ligne de commande. Cela peut être utile si vos suites de tests gèrent les avertissements à l'aide d'un système externe.
OU si vous souhaitez uniquement masquer un avertissement obsolète spécifique, ajoutez l'instruction ci-dessous dans votre fichier pytest.ini
Cela ignorera tous les avertissements de type DeprecationWarning où le début du message correspond à l'expression régulière ". * U. * mode is deprecation".
OU Bien que non recommandé, vous pouvez utiliser le
option de ligne de commande pour supprimer entièrement le résumé des avertissements de la sortie du test.
la source
Je ne veux pas cacher tous les avertissements, alors je mets ça
pytest.ini
la source