通过鼻子测试检查某个函数是否发出警告
我正在使用 nose 编写单元测试,我想检查一下函数是否引发警告(该函数使用warnings.warn
)。这是很容易就能做到的事情吗?
I'm writing unit tests using nose, and I'd like to check whether a function raises a warning (the function uses warnings.warn
). Is this something that can easily be done?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
当然,您不仅可以检查长度,还可以深入检查:
assert str(w.args[0]) == "deprecated"
在 python 2.7 或更高版本中,您可以这样做最后一次检查为:
assert str(w[0].message[0]) == "deprecated"
Instead of just checking the lenght, you can check it in-depth, of course:
assert str(w.args[0]) == "deprecated"
In python 2.7 or later, you can do this with the last check as:
assert str(w[0].message[0]) == "deprecated"
有(至少)两种方法可以做到这一点。您可以在测试中的
warnings.WarningMessage
的list
中捕获警告,或使用mock
来patch
导入的内容模块中的警告
。我认为
patch
版本更通用。raise_warning.py:
raise_warning_tests.py:
There are (at least) two ways of doing this. You can catch the warning in the
list
ofwarnings.WarningMessage
s in test or usemock
topatch
the importedwarnings
in your module.I think the
patch
version is more general.raise_warning.py:
raise_warning_tests.py: