我正在为我拥有的模块编写一些单元测试。我需要修补open
,所以当测试模块内的函数调用open
模拟时,使用模拟而不是真实的open
.
此代码有效,但我认为它会破坏另一个测试,因为没有恢复open
到其原始值:
class TestCases(unittest.TestCase):
def test_something(self):
from amodule import bmodule
open_mock = mock.MagicMock(spec=open)
bmodule.__builtins__['open'] = open_mock
read_mock = mock.MagicMock()
open_mock.return_value.__enter__.return_value = read_mock
self.assertTrue(bmodule.some_function())
self.assertEqual(open_mock.call_args_list, ['filename1', 'filename2'])
我怎样才能做到这一点mock.patch
?