ImportError: Не удалось импортировать тестовый модуль При Python интеграционном тесте - PullRequest
0 голосов
/ 25 марта 2020

Структура каталога моего проекта выглядит следующим образом:

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, тест выполняется без проблем.

1 Ответ

0 голосов
/ 25 марта 2020

Проблема была на самом деле очень простой; Я оставил двоеточие в конце

class PROJECT_INTEGRATION_TEST(unittest.TestCase) # <- no colon

в test_integration.py После исправления этого импорт с import my_only_script в test_integration.py работал просто отлично.

...