首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Testdriven.io:尝试在conftest.py中导入应用程序时带有FastAPI和Docker错误的测试驱动开发

Testdriven.io:尝试在conftest.py中导入应用程序时带有FastAPI和Docker错误的测试驱动开发
EN

Stack Overflow用户
提问于 2021-10-21 18:27:09
回答 1查看 357关注 0票数 0

我遵循testdriven.io测试驱动开发与FastAPI和Docker教程,我被困在Pytest设置步骤。我又检查了一遍,看我错过了什么,而且一直很短。

本教程中的代码示例显示,在conftest.py中,您将获得以下from语句:

代码语言:javascript
复制
from app import main
from app.config import get_settings, Settings

首先,Pycharm告诉我它无法从上面导入任何东西。我的文件夹结构:

main.py:

代码语言:javascript
复制
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

代码语言:javascript
复制
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运行测试。

这是我在运行测试时得到的输出:

任何帮助都将不胜感激。我觉得这是入门级的东西,会引起极大的头痛。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-24 03:52:56

感谢@MatsLindh的帮助。正如他在上面的评论中提到的,本教程让您在整个项目上运行pytest,而不仅仅是test文件夹。直接在测试上运行解决了我在pytest失败时的问题。他还对如何使导入在IDE中正确工作提供了很好的建议,他建议查看pytest文档,以便进行进一步的集成。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69667032

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档