Ошибка импорта при запуске py.test - PullRequest
0 голосов
/ 29 июня 2018

Когда я пытался запустить pytest, я получаю сообщение об ошибке, это структура моего проекта:

slots_tracker/
    README.md
    development.txt
    requirements.txt
    tasks.py
    venv/
    slots_tracker/
        __init__.py
        conf.py
        db.py
        expense.py
        server.py
        swagger.yml
        test_api.py

Это мой тестовый файл:

from expense import create
from conf import PayMethods


def test_create_new_expense():
    response = create(dict(amount=200, desc='Random stuff',
                           pay_method=PayMethods.Visa.value))
# We got a success code
assert response[1] == 201

когда я запускаю pytest с:

pytest

Я получаю эту ошибку:

ModuleNotFoundError: No module named 'expense'

Если я запускаю pytest с:

python -m pytest

Я не получаю никакой ошибки, также я могу запустить свое приложение и не получить никакой ошибки импорта:

python server.py

Я также замечаю, что если я удалю файл __init__.py, я смогу запустить pytest только с:

pytest

Я могу это исправить? удаление __init__.py не похоже на «правильное» решение, потому что я собираю пакет, поэтому в нем должен быть __init__.py файл.

Я работаю на Mac с Python 3.6.5 в виртуальной среде.

1 Ответ

0 голосов
/ 29 июня 2018

Используйте абсолютный импорт в вашем коде и тестах.

Изменить это:

from expense import create
from conf import PayMethods

до:

from slots_tracker.expense import create
from slots_tracker.conf import PayMethods

Я только что проверил это, и оно работает.

...