Могу ли я имитировать `open` (и другие встроенные функции) при тестировании моих функций?

При написании модульных тестов я могу использовать unittest.mock, чтобы изолировать зависимости и контролировать использование имитируемых функций. Могу ли я сделать то же самое с вызовами встроенных функций?

В частности, было бы неплохо поиздеваться над open(), чтобы я мог предоставить тестовый ввод или отслеживать вывод без использования файлов на диске. Возможно ли это и целесообразно ли это? (Я уже знаю, что это можно сделать без насмешек для функций, которые принимают открытый файловый объект, а не имя файла.)


person alexis    schedule 29.10.2017    source источник
comment
Вы можете определить свой собственный open, свой собственный print, что угодно ... У вас может быть строка с именем open, unittest.mock с именем open. Они будут затенять встроенный.   -  person ForceBru    schedule 29.10.2017
comment
Спасибо за подсказку, @Wyatt! Я посмотрю, работает ли решение с unittest.mock, и если да, то закрою свой вопрос.   -  person alexis    schedule 29.10.2017
comment
Действительно, это работает ... ответ Мишель д'Амико (второй ответ), а не принятый.   -  person alexis    schedule 29.10.2017