如何解决如果没有引发异常,则通过Python单元测试
| 在Pythonunittest
框架中,如果没有引发异常,是否有一种方法可以通过单元测试,否则会因AssertRaise而失败?
解决方法
如果我正确理解了您的问题,则可以执行以下操作:
def test_does_not_raise_on_valid_input(self):
raised = False
try:
do_something(42)
except:
raised = True
self.assertFalse(raised,\'Exception raised\')
...假设您有一个相应的测试,可以证明在无效输入上会产生正确的Exception
,当然:
def test_does_raise_on_invalid_input(self):
self.assertRaises(OutOfCheese,do_something,43)
但是,正如评论中指出的那样,您需要考虑实际测试的内容。可能是像...这样的测试
def test_what_is_42(self):
self.assertEquals(do_something(42),\'Meaning of life\')
...更好,因为它可以测试系统所需的行为,并且在引发异常时将失败。
, 此页面上的许多评论将错误和失败视为同等的,但事实并非如此。我认为正确的解决方案是,如果引发异常,则显式地使测试失败。例如。:
def test_does_not_error(self):
try:
code_under_test()
except ThatException:
self.fail(\"code_under_test raised ThatException\")
, 只需调用您的功能,例如do_something()
。如果引发未处理的异常,则测试将自动失败!确实没有任何其他原因。这也是why7不存在的原因。
图片来源:Sven评论
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。