猎鹰中有一个服务器和一个测试模块,但是在运行测试用例时,我无法将服务器模块导入测试模块中。
这是我的等级结构:
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'
我在做什么错了。
答案 0 :(得分:0)
Python仅在脚本的当前路径(在您的情况下为/tests
)中检查模块。您还需要在路径中添加/project
。以下代码段应该起作用:
import sys
sys.path.append("../")
import server
答案 1 :(得分:0)
首先,您必须将项目目录添加到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>()
。 / p>
答案 2 :(得分:0)
最好的解决方案是使您的软件包可安装,而不是摆弄PYTHONPATH。在此处查看python打包的准则:https://packaging.python.org/tutorials/packaging-projects/