如何在 unnitest 中测试异常部分 python
How to test exception part in unnitest python
我想测试我代码的异常部分。
def main():
try:
logger.info("Ejecución planificada proceso Mae_CIL")
a = ObjectA()
a.method()
logger.info("Success")
except Exception as e:
logger.error("Error: %s" % e)
@mock.patch.object(ObjectA, 'method')
def test_main(self, mock_method):
# Case 1: Success
mock_method.return_value = None
main()
self.assertEqual(1, 1)
# Case 2: Test Exception
mock_method.return_value = Exception
self.assertRaises(Exception, main)
案例1测试main方法。案例 2 测试异常但测试失败并显示此消息 'Exception: Exception not raised by main'
如何测试异常部分?
如您所见,仅将 return_value
设置为异常不会导致引发该异常。那是因为异常是 not a return——这是一个完全不同的执行上下文,几乎根据定义意味着你的函数 not return。也可以编写一个 return 异常对象的函数(或 class 作为您的示例)。
你想要Mock.side_effect
.
我想测试我代码的异常部分。
def main():
try:
logger.info("Ejecución planificada proceso Mae_CIL")
a = ObjectA()
a.method()
logger.info("Success")
except Exception as e:
logger.error("Error: %s" % e)
@mock.patch.object(ObjectA, 'method')
def test_main(self, mock_method):
# Case 1: Success
mock_method.return_value = None
main()
self.assertEqual(1, 1)
# Case 2: Test Exception
mock_method.return_value = Exception
self.assertRaises(Exception, main)
案例1测试main方法。案例 2 测试异常但测试失败并显示此消息 'Exception: Exception not raised by main'
如何测试异常部分?
如您所见,仅将 return_value
设置为异常不会导致引发该异常。那是因为异常是 not a return——这是一个完全不同的执行上下文,几乎根据定义意味着你的函数 not return。也可以编写一个 return 异常对象的函数(或 class 作为您的示例)。
你想要Mock.side_effect
.