import warnings import sys warning_emitted = False warning_allowed = False warning_expected = False def showwarning(*args): global warning_emitted old_showwarning(*args) warning_emitted = True old_showwarning = warnings.showwarning warnings.showwarning = showwarning print >> sys.stderr, "*** Warnings are initially allowed" def forbid_warnings(): global warning_allowed global warning_emitted warning_allowed = False warning_emitted = False print >> sys.stderr print >> sys.stderr, "*** Warnings are now forbidden" def expect_warnings(): global warning_expected global warning_emitted warning_expected = True warning_emitted = False print >> sys.stderr print >> sys.stderr, "*** A warning is now expected" def allow_warnings(): __tracebackhide__ = True global warning_emitted global warning_allowed global warning_expected assert (not warning_emitted or warning_allowed), "Warning not expected" assert (warning_emitted or not warning_expected), "Warning expected" warning_emitted = False warning_allowed = True warning_expected = False print >> sys.stderr print >> sys.stderr, "*** Warnings are now allowed"