un1t
@un1t

Почему pytest не видит модуль и происходит ImportError:?

При запуске py.test выдается ошибка
ImportError: No module named 'apps.catalog.tests.factory'; 'apps.catalog.tests' is not a package

Все остальные тесты проходят нормально.

Причем код рабочий.
Если импортировать из python или ./manage.py shell то все работает.

Все __init__.py в нужных местах присутствуют.
Такая проблема только с одним приложением, все остальные импортируются нормально. Даже пробовал грохнуть это приложение и пересоздать. Не помогло.

Есть идеи куда смотреть? В чем может быть проблема?

py.test.ini
[pytest]
DJANGO_SETTINGS_MODULE=project.testing_settings
testpaths=apps
python_files=
    tests.py
    test_*.py
pep8maxlinelength=150
pep8ignore=
    migrations/*.py ALL

$ py.test apps/core/tests/test_dev.py 
============================================================= test session starts =============================================================
platform linux -- Python 3.4.3, pytest-2.9.2, py-1.4.31, pluggy-0.3.1
django settings: project.testing_settings (from ini file)
rootdir: /home/ilya/workspace/myproject, inifile: pytest.ini
plugins: pep8-1.0.6, django-2.9.1, cov-2.3.0, xdist-1.14
collected 0 items / 1 errors 

=================================================================== ERRORS ====================================================================
________________________________________________ ERROR collecting apps/core/tests/test_dev.py _________________________________________________
apps/core/tests/test_dev.py:4: in <module>
    from ..dev import fill_dev_db
apps/core/dev.py:1: in <module>
    from apps.catalog.tests.factory import TagFactory
E   ImportError: No module named 'apps.catalog.tests.factory'; 'apps.catalog.tests' is not a package
=========================================================== 1 error in 0.10 seconds ===========================================================


Вяснил еще что если 'apps.catalog.tests', прописать в INSTALLED_APPS, то тест проходит.
  • Вопрос задан
  • 4371 просмотр
Решения вопроса 1
un1t
@un1t Автор вопроса
При написании дальнейшего кода, он внезапно начал выдавать более адекватную ошибку. Оказалось что в приложении catalog там и папка tests и файл tests.py лежит. В этом проблема была.

import file mismatch:
imported module 'apps.catalog.tests' has this __file__ attribute:
  /home/ilya/workspace/myproject/apps/catalog/tests
which is not the same as the test file we want to collect:
  /home/ilya/workspace/myproject/apps/catalog/tests.py
HINT: remove __pycache__ / .pyc files and/or use a unique basename for your test file modules
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы