2
我正在为我有的模块编写一些单元测试。我需要修补open
,以便在测试模块内的功能调用open
时,使用模拟代替实际的open
。如何使用Mock从导入的模块打开'打开'
此代码的工作,但我认为这将打破了另一个测试,因为没有恢复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
?