首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TestDriven.io教程“AWS上的可伸缩FastAPI应用程序”:第1部分请求Talk Endpont代码不起作用

TestDriven.io教程“AWS上的可伸缩FastAPI应用程序”:第1部分请求Talk Endpont代码不起作用
EN

Stack Overflow用户
提问于 2021-10-06 14:17:25
回答 2查看 39关注 0票数 0

我正在学习TestDriven.io教程“AWS上的可伸缩FastAPI应用程序”。在第1部分的"API“一章中,"Request a Talk”- "Endpoint“下的代码失败了,但并不像预期的那样。这是指向该页面的链接:

https://testdriven.io/courses/scalable-fastapi-aws/api-endpoints/

文件是test_app.py,有问题的行是:

代码语言:javascript
复制
from web_app.app import app

运行此文件时,错误为"No module named web_app.app“

当我将其改为导入web_app.main时(这更有意义,因为实际上有一个web/main.py文件),我在以下几行得到一个错误:

代码语言:javascript
复制
@pytest.fixture
def client():
    app.config["TESTING"] = True

现在的错误是“配置:'FastAPI‘对象没有’AttributeError‘属性”。

到目前为止,还有没有其他人完成了本教程,并遇到了同样的问题?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-10-06 14:25:58

给出的示例不是针对FastAPI的,而是针对Flask的(来自current version of Flask's examples on configuration handling):

代码语言:javascript
复制
app = Flask(__name__)
app.config['TESTING'] = True

在FastAPI中,如果有必要,您通常会覆盖显式依赖项,并且/或者使用环境变量来更改pydantic的BaseSettings对象中的配置。

Using BaseSettings

代码语言:javascript
复制
from pydantic import BaseSettings


class Settings(BaseSettings):
    app_name: str = "Awesome API"
    admin_email: str
    items_per_user: int = 50

然后,您可以使用APP_NAMEADMIN_EMAIL作为环境变量来覆盖特定的配置设置。您还可以在需要时将设置对象作为依赖项注入,然后在测试时重写该依赖项。

Overriding a dependency

代码语言:javascript
复制
async def override_dependency(q: Optional[str] = None):
    return {"q": q, "skip": 5, "limit": 10}


app.dependency_overrides[common_parameters] = override_dependency

考虑到您已经提到的错误,以及给出的示例似乎与FastAPI完全不同,我会谨慎地相信这些原始材料(链接在表单中的符号后面,所以它不是公开可用的)。

票数 0
EN

Stack Overflow用户

发布于 2021-10-08 12:13:43

MatsLindh:是的-通过用下面的代码替换代码,我能够让它工作:

代码语言:javascript
复制
from web_app.main import app


@pytest.fixture
def client():
    return TestClient(app)

这与在FastAPI中应该如何完成操作相对应

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

https://stackoverflow.com/questions/69467455

复制
相关文章

相似问题

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