Я в проекте, где мы начинаем рефакторинг некоторой массивной базы кода. Одна из проблем, которая сразу же возникла, заключается в том, что каждый файл импортирует много других файлов. Как я изящно обманываю это в своем модульном тесте, не изменяя фактический код, поэтому я могу начать писать модульные тесты?Python, unit-testing и mocking import
В качестве примера: файл с функциями, которые я хочу протестировать, импортирует десять других файлов, которые являются частью нашего программного обеспечения, а не ядро python.
Я хочу иметь возможность запускать модульные тесты как можно более индивидуально, и на данный момент я собираюсь только проверять функции, которые не зависят от вещей из импортируемых файлов.
Спасибо за все ответы.
Я не знал, с чего я хотел начать с самого начала, но теперь, думаю, знаю.
Проблема заключалась в том, что некоторые импортные операции были возможны только в том случае, если все приложение было запущено из-за какой-либо сторонней автомагии. Поэтому я должен был сделать некоторые заглушки для этих модулей в каталоге, который я указал с помощью sys.path.
Теперь я могу импортировать файл, содержащий функции, которые я хочу написать, тесты в моем тестовом файле без жалоб на отсутствующие модули.
Вы хотите добавить `try: finally:` в метод mock_import, чтобы не оставлять систему с завернутым импортом вместо стандартного в случае ошибки – Yonatan 2013-02-19 08:37:02