Я пытаюсь создать проект python3 с помощью модульных тестов. Я настроил структуру папок так, чтобы исходные файлы и тестовые файлы находились на одном уровне в структуре папок. В папке с исходным кодом я добавил файл init .py, чтобы я мог импортировать его в тестовые классы. У меня получилась следующая установка.
root_folder
|--source_code
| |-- __init__.py
| |-- submodule1
| | -files
| |-- submodule2
| -files
|--test_folder
| |--unit
| --integration
Чтобы импортировать модуль source_code в тестовые сценарии, я использую from source_code import submodule1.
, и я запускаю тесты из корневая_папка . Однако когда я запускаю тесты с текущим рабочим каталогом, настроенным как root_folder , тестовые сценарии не могут импортировать модуль source_code . Эта проблема возникает только тогда, когда я использую стандартный python3 REPL. Если я таким же образом запустил i python3 REPL из проекта Jupyter, импорт будет работать отлично.
Хотя это не нарушает условия сделки, я бы хотел, чтобы проект не зависел от другого. другой REPL из-за неправильной настройки проекта.
Есть какие-нибудь подсказки о том, что я делаю неправильно?
Изменить:
root_folder
|--source_code
| |-- __init__.py
| |-- submodule1
| | -files
| |-- submodule2
| -files
|--test_folder
| |-- __init__.py
| |--unit
| --integration
Я также изменил структуру, чтобы иметь init файл в тестовой папке, но проблема не устранена. Кажется, что если я запускаю python3 IDLE, я могу обнаружить оба пакета, имея в качестве пути путь к каталогу root, поэтому на данный момент я не уверен, почему различное поведение между двумя режимами выполнения.