Не удалось импортировать модуль Python - PullRequest
0 голосов
/ 31 мая 2019

У меня есть сервер и модуль тестирования в соколе, но я не могу импортировать модуль сервера в модуль тестирования при выполнении тестовых случаев.

Это моя иерархия:

project
   |
    --__init__.py
    --server.py
   |
     /tests
        |
          --__init__.py
          -- apitest.py

Это мой тестовый код

"""
Unit test for Ping api resource
"""

from falcon import testing
import pytest
import server

@pytest.fixture(scope='module')
def client():
    return testing.TestClient(server.api)

def test_get_message(client):
    result = client.simulate_get('/api/ping')
    assert result.status_code == 200

Но когда я запускаю его, он показывает:

Traceback:
apiTest.py:7: in <module>
    import server
E   ImportError: No module named 'server'

Что я здесь не так делаю.

Ответы [ 3 ]

0 голосов
/ 31 мая 2019

Сначала вы должны установить каталог для добавления вашего проекта в PYTHONPATH или поместить ваш проект в каталог, который уже добавлен.Это позволяет python использовать ваш пакет.

Вы можете добавить каталог, используя команду set для cmd.Например, если вы хотите добавить C:\Python, используйте команду set PYTHONPATH = C:\Python

Теперь, чтобы импортировать server.py, вам нужно набрать import project.server или from project import server.

Если вы наберете import project.server, чтобы использовать функцию на сервере, вам нужно будет набрать project.server.<fuction>(), а если вы использовали from project import server, вам придется использовать server.<function>().

0 голосов
/ 31 мая 2019

Лучшим решением было бы сделать ваш пакет инсталлируемым, а не возиться с PYTHONPATH. Смотрите руководство по упаковке Python здесь: https://packaging.python.org/tutorials/packaging-projects/

0 голосов
/ 31 мая 2019

Python проверяет наличие модуля только в текущем пути скрипта, который в вашем случае равен /tests. Вам также необходимо добавить /project к вашему пути. Следующий фрагмент кода должен работать:

import sys
sys.path.append("../")

import server
...