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
?