2024-09-26 22:08:46 发布
网友
在Python unittest框架中,如果没有引发异常,是否有方法通过单元测试,否则使用AssertRaise失败?
unittest
如果我正确理解你的问题,你可以这样做:
def test_does_not_raise_on_valid_input(self): raised = False try: do_something(42) except: raised = True self.assertFalse(raised, 'Exception raised')
…假设您有一个对应的测试,正确的Exception在无效的输入上产生,当然:
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')
…更好,因为它测试系统的所需行为,如果引发异常,它将失败。
只需调用您的功能,例如do_something()。如果引发未处理的异常,测试将自动失败!真的没有理由做别的事。这也是assertDoesNotRaise()不存在的原因。
do_something()
assertDoesNotRaise()
信贷:斯文评论
本页上的许多评论都将错误和失败视为等价的,而事实并非如此。在我看来,正确的解决方案是在引发异常时显式地使测试失败。E、 g.:
def test_does_not_error(self): try: code_under_test() except ThatException: self.fail("code_under_test raised ThatException")
如果我正确理解你的问题,你可以这样做:
…假设您有一个对应的测试,正确的
Exception
在无效的输入上产生,当然:然而,正如评论中所指出的,您需要考虑您实际上是在进行什么样的测试。很可能是一个像。。。
…更好,因为它测试系统的所需行为,如果引发异常,它将失败。
只需调用您的功能,例如
do_something()
。如果引发未处理的异常,测试将自动失败!真的没有理由做别的事。这也是assertDoesNotRaise()
不存在的原因。信贷:斯文评论
本页上的许多评论都将错误和失败视为等价的,而事实并非如此。在我看来,正确的解决方案是在引发异常时显式地使测试失败。E、 g.:
相关问题 更多 >
编程相关推荐