ModuleNotFoundError при запуске теста - PullRequest
0 голосов
/ 05 августа 2020

У меня есть каталог проекта, как показано ниже:

bin/
bin/module1/module1.py
bin/module1/settings.py 
bin/module1/helpers.py  --> This module does not have reference to bin/module1/settings.py
bin/module2/module2.py
bin/module2/settings.py
bin/module2/helpers.py --> This module has reference to bin/module2/settings.py
bin/tests/test_module1.py --> This test imports helpers from bin/module1/helpers.py
bin/tests/test_module2.py --> This test imports helpers from bin/module2/helpers.py
bin/tox.ini
bin/conftest.py
bin/setup.py

setup.py содержит следующее содержимое:

from setuptools import setup, find_packages

setup(
    name='my_project',
    version='0.0.1',
    description='Implement my_project',
    long_description='Implement my_project',
    author='my_name',
    author_email='a.my_name@my_domain.com',
    packages=find_packages(exclude=['tests*'])
)

Я использую pytest.

Когда я запускаю test_module1.py, который ссылается на bin/module1/helpers.py с использованием маркеров pytest, а bin/module1/helpers.py не имеет импорта в bin/module1/settings.py. Тест прошел отлично.

Но когда я запускаю bin/tests/test_module2.py с использованием маркеров pytest, а bin/module2/helpers.py импортирует в bin/module2/settings.py, при запуске этого теста я вижу ModuleNotFoundError: No module named 'settings' error

    import settings as settings
E   ModuleNotFoundError: No module named 'settings'

Ответы [ 2 ]

0 голосов
/ 05 августа 2020

Проблема была решена с помощью ссылки SO: Получение «ImportError: попытка относительного импорта без известного родительского пакета» при запуске из Python Interpreter

Используется подход 1 из приведенной выше ссылки, которая как показано ниже:

try:
    # Assume we're a sub-module in a package.
    from . import models
except ImportError:
    # Apparently no higher-level package has been imported, fall back to a local import.
    import models
0 голосов
/ 05 августа 2020

Единственный известный мне метод - это изменить import settings as settings к import .settings as settings Удачного кодирования!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...