【发布时间】:2020-05-24 07:00:20
【问题描述】:
我的项目结构是这样的
\project
\app.py
\tests
\__init__.py
\test_startup.py
app.py 看起来像这样
from starlette.applications import Starlette
from starlette.responses import UJSONResponse
from starlette.routing import Route
async def homepage(request):
return UJSONResponse({'hello': 'world'})
app = Starlette(debug=True, routes=[
Route('/', homepage)
])
test_startup.py 看起来像这样
from starlette.testclient import TestClient
from ..app import app
def test_app():
client = TestClient(app)
response = client.get('/')
assert response.status_code == 200
__init__.py 是一个空文件。
当我尝试从我的项目目录运行 pytest -v 时,它失败并出现错误
tests/test_startup.py:1: in <module>
from starlette.testclient import TestClient
E ModuleNotFoundError: No module named 'starlette'
我能够运行该应用程序。我还试图将conftest.py 放入tests 和project 文件夹中,但没有帮助。
有什么问题?
【问题讨论】:
-
你是在虚拟环境中安装starlette还是到你的主要python解释器?
-
@KrishnanShankar 是的,我已经全部安装并能够单独运行它——就像执行
app.py文件一样。但在测试中它失败了