Я работаю над разработкой юнит-тестов для проекта, который уже был завершен, однако мне трудно выполнять мои юнит-тесты без изменения исходного кода. Модуль, который я пытаюсь протестировать, имеет другие зависимости в той же папке, которые не будут импортированы при запуске юнит-тестов. Вот как выглядит мой каталог:
root
|--main_folder
|--module1.py
|--module2.py
|--tests
|--test_module1.py
Исходный код в module1.py успешно импортирует module2.py сам по себе так: from module2 import Practices
где Practices
- функция из module2
.
Проблема, с которой я сталкиваюсь, заключается в том, что для запуска test_module1.py
(что я делаю, вызывая python3 -m unittest
из каталога root), мне нужно изменить саму module1.py
так, чтобы она говорит: from main_folder.module2 import Practices
.
Если я запускаю тестовый файл без изменения module1.py
, я получаю ошибку ModuleNotFoundError: No module named 'module2'
.
В идеале я не могу изменить код таким образом, и я пытаюсь найти способ заставить мои тесты работать, не касаясь самого приложения. Как я должен go об этом? module1.py
работает нормально, когда я запускаю приложение, не изменяя файл, но изменяя его так, чтобы работа тестов нарушала основное приложение. Что я могу сделать, чтобы мои тесты не зависели от кода основного приложения?
(Для получения дополнительной информации файл test_module1.py
работает путем вызова from main_folder.module1 import fun1
, где fun1
- это функция, которую я пытаюсь проверить)