Pass a Python unittest if an exception isn't raised
在python
本页上的许多评论都将错误和失败视为等效的,而事实并非如此。在我看来,正确的解决方案是,如果出现异常,那么就显式地不通过测试。例如。:
1 2 3 4 5 | def test_does_not_error(self): try: code_under_test() except ThatException: self.fail("code_under_test raised ThatException") |
如果我正确理解你的问题,你可以这样做:
1 2 3 4 5 6 7 | def test_does_not_raise_on_valid_input(self): raised = False try: do_something(42) except: raised = True self.assertFalse(raised, 'Exception raised') |
…假设您有一个相应的测试,正确的
1 2 | def test_does_raise_on_invalid_input(self): self.assertRaises(OutOfCheese, do_something, 43) |
然而,正如评论中指出的,您需要考虑实际测试的是什么。很可能是像…
1 2 | def test_what_is_42(self): self.assertEquals(do_something(42), 'Meaning of life') |
…更好,因为它测试系统所需的行为,如果出现异常,它将失败。
正如sven在评论中所指出的,只需调用您的功能,例如