如何在 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.