我遵循testdriven.io测试驱动开发与FastAPI和Docker教程,我被困在Pytest设置步骤。我又检查了一遍,看我错过了什么,而且一直很短。
本教程中的代码示例显示,在conftest.py中,您将获得以下from语句:
from app import main
from app.config import get_settings, Settings首先,Pycharm告诉我它无法从上面导入任何东西。我的文件夹结构:

main.py:
import os
from fastapi import FastAPI, Depends
from tortoise.contrib.fastapi import register_tortoise
from .config import get_settings, Settings
app = FastAPI()
register_tortoise(
app,
db_url=os.environ.get("DATABASE_URL"),
modules={"models": ["app.models.tortoise"]},
generate_schemas=False,
add_exception_handlers=True,
)
@app.get("/ping")
async def pong(settings: Settings = Depends(get_settings)):
return {"ping": "pong", "environment": settings.environment, "testing": settings.testing}conftest.py
import os
import pytest
from starlette.testclient import TestClient
from app import main
from app.config import get_settings, Settings
def get_settings_override():
return Settings(testing=1, database_url=os.environ.get("DATABASE_TEST_URL"))
@pytest.fixture(scope="module")
def test_app():
# set up
main.app.dependency_overrides[get_settings] = get_settings_override
with TestClient(main.app) as test_client:
# testing
yield test_client
# tear down本教程让您使用docker-compose exec web python -m pytest运行测试。
这是我在运行测试时得到的输出:

任何帮助都将不胜感激。我觉得这是入门级的东西,会引起极大的头痛。
发布于 2021-10-24 03:52:56
感谢@MatsLindh的帮助。正如他在上面的评论中提到的,本教程让您在整个项目上运行pytest,而不仅仅是test文件夹。直接在测试上运行解决了我在pytest失败时的问题。他还对如何使导入在IDE中正确工作提供了很好的建议,他建议查看pytest文档,以便进行进一步的集成。
https://stackoverflow.com/questions/69667032
复制相似问题