← retour aux snippets

warnings.catch_warnings: capturer et tester des warnings

Enregistrer les warnings dans un contexte pour les inspecter ou tester.

python warnings #warnings#testing

objectif

Enregistrer les warnings dans un contexte pour les inspecter ou tester.

code minimal

import warnings
with warnings.catch_warnings(record=True) as rec:
    warnings.simplefilter("always")
    warnings.warn("deprecated", DeprecationWarning)
    print(len(rec) == 1)  # attendu: True

utilisation

import warnings
with warnings.catch_warnings(record=True) as rec:
    warnings.simplefilter("error", ResourceWarning)
    warnings.warn("ok", UserWarning)
    print(any(isinstance(w.message, UserWarning) for w in rec))

variante(s) utile(s)

import warnings
print(callable(warnings.catch_warnings))

notes

  • record=True retourne une liste de WarningMessage; utile en tests.
  • simplefilter permet de promouvoir un type de warning en erreur.