l0b*_*0b0 5 python warnings python-2.4
我有一些测试需要计算函数引发的警告数量.在Python 2.6中,这很简单,使用
with warnings.catch_warnings(record=True) as warn:
...
self.assertEquals(len(warn), 2)
Run Code Online (Sandbox Code Playgroud)
不幸的是,with在Python 2.4中没有,所以我还能使用什么呢?我不能简单地检查是否有一个警告(使用action='error'和try/的警告过滤器catch),因为警告的数量很大.
我将建议使用与Ignacio相同的解决方法,这是一个更完整的测试代码示例:
import warnings
def setup_warning_catcher():
""" Wrap warnings.showwarning with code that records warnings. """
caught_warnings = []
original_showwarning = warnings.showwarning
def custom_showwarning(*args, **kwargs):
caught_warnings.append(args[0])
return original_showwarning(*args, **kwargs)
warnings.showwarning = custom_showwarning
return caught_warnings
caught_warnings_list = setup_warning_catcher()
# trigger warning here
assert len(caught_warnings_list) == 1
Run Code Online (Sandbox Code Playgroud)