Структура каталога моего проекта выглядит следующим образом:
project/
│
├── __init__.py
├── my_only_script.py
│
│
└── tests/
|
└── unit/
| ├── __init__.py
| └── unit_test.py
|
└── integration/
|
├── fixtures/
| ├── correct_data.csv
| └── generated_data.csv
|
├── __init__.py
└── test_integration.py
И я пытаюсь выполнить свои интеграционные тесты для my_only_script.py, запустив unittest
в режиме обнаружения в каталоге тестов
# working directory is project root
python -m unittest discover -s tests
Однако, когда я запускаю эту команду, меня встречает ошибка
ImportError: Failed to import test module: integration.test_integration
Почему unittest
может обнаружить интеграционный тест - в конце концов, он упоминал модуль по имени integration.test_integration
, поэтому он, должно быть, нашел его - но все же, интеграционный тест не может быть импортирован?
edit
Полное сообщение об ошибке, с которым я сталкиваюсь:
(base) [project]$ python -m unittest discover -s tests
E
======================================================================
ERROR: integration.test_integration (unittest.loader._FailedTest)
ImportError: Failed to import test module: integration.test_integration
Traceback (most recent call last):
File "/home/david/anaconda3/lib/python3.7/unittest/loader.py", line 436, in _find_test_path
module = self._get_module_from_name(name)
File "/home/david/anaconda3/lib/python3.7/unittest/loader.py", line 377, in _get_module_from_name
import(name)
File "/home/david/project/tests/integration/test_integration.py", line 13
class PROJECT_INTEGRATION_TEST(unittest.TestCase)
^
SyntaxError: invalid syntax
Ran 1 test in 0.000s
FAILED (errors=1)
В test_integration.py я пробовал относительный импорт from ... import my_only_script
, абсолютный импорт from project import my_only_script
, в дополнение к обычному import my_only_script
. Я также попытался полностью закомментировать оператор импорта. Кажется, что все приводит к той же ошибке, показанной выше.
Я знаю, что нет ничего иначе неправильно с кодом в test_integration.py
, потому что, если я переместлю его в root проекта и запустите его, используя python test_integration.py
, где test_integration.py использует import my_only_script
, тест выполняется без проблем.