Не удается импортировать модуль сервера из моей папки тестирования - PullRequest
0 голосов
/ 03 июля 2019

Я пишу фляжное приложение, которое соответствует следующей структуре папок.

backend
  server.py
  __init__.py
    test
      __init__.py
      servertest.py

"""Server ping test for flask"""

import flask
import pytest
from server import app

@pytest.fixture()
def client():
    yield testing.TestClient(app)


def test_ping_resource(client):
    doc = "Flask GET service is working"
    result = client.simulate_get("/api/ping")
    assert result.status_code == 200
    assert result.json == doc

И это мой тестовый файл.Когда я запускаю файл.это дает

   from server import app
E   ImportError: No module named 'server'

Что я делаю не так, что делает серверный модуль невидимым для тестового модуля?

Ответы [ 2 ]

0 голосов
/ 03 июля 2019

Когда вы запускаете файл python, его родительская папка добавляется в путь python , но родительским элементом его родительского файла (здесь, вашей корневой папки) не является!

Что выможно сделать так:

  • запуск тестов из корневой папки (предпочтительно)
  • Использование относительного импорта , здесь: from ..server import app
  • Измените ваш путь к питону ( не рекомендуется )
0 голосов
/ 03 июля 2019

Python импортирует модули из списка путей:

import sys
sys.path

Вы должны предоставить Python способ найти server.py:

  • вы можете запустить свой код из каталога backend, поскольку текущий путь автоматически указывается для sys.path (cd backend; pytest)
  • Вы можете добавить полный путь к backend к PYTHONPATH

В какой-то момент вам нужно прочитать документ об импорте .

Кроме того, для естественного использования pytest ваши тестовые файлы должны начинаться с test.

...