使用assertRaises或mock.patch进行Python单元测试sys.exit调用

使用assertRaises或mock.patch进行Python单元测试sys.exit调用,python,mocking,python-unittest,sys,systemexit,Python,Mocking,Python Unittest,Sys,Systemexit,我已经阅读了很多答案,其中建议单元测试sys.exit的方法是执行以下操作: with self.assertRaises(SystemExit) as system_exit: function() self.assertEqual(system_exit.exception_code, 1) 在我的测试中,上面的操作实际上没有引发SystemExit吗?做以下事情是好还是坏 @mock.patch("<path to class file>.sys.exit") def

我已经阅读了很多答案,其中建议单元测试sys.exit的方法是执行以下操作:

with self.assertRaises(SystemExit) as system_exit:
    function()
self.assertEqual(system_exit.exception_code, 1)
在我的测试中,上面的操作实际上没有引发SystemExit吗?做以下事情是好还是坏

@mock.patch("<path to class file>.sys.exit")
def testFunction(self, mock_sys_exit):
    function()
    mock_sys_exit.assert_called_once_with(1)
@mock.patch(“.sys.exit”)
def测试功能(自我、模拟系统退出):
函数()
模拟系统退出。断言调用一次(1)

这两种方法是等效的,还是一种优于另一种?为什么呢?

使用最适合你的东西。也就是说,我更喜欢
assereraises
,因为它更明确,但那只是我。使用最适合你的东西。也就是说,我更喜欢
asserraies
,因为它更明确,但那只是我自己。