Я пишу несколько модульных тестов для имеющегося у меня модуля. Мне нужно исправить 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
?