生命周期和测试
有些代码需要在应用启动时执行一次,在应用关闭时清理。
例如:
- 创建数据库连接池
- 加载机器学习模型
- 初始化缓存客户端
- 关闭外部资源连接
FastAPI 当前推荐使用 lifespan 管理这些逻辑。
一、lifespan 基本写法
执行顺序:
旧教程里常见的 @app.on_event("startup") 和 @app.on_event("shutdown") 已不再是推荐写法,新项目优先使用 lifespan。
二、app.state
app.state 可以保存应用级别的共享对象。
路由里读取:
注意:app.state 适合放共享资源,不适合放每个用户自己的数据。
三、为什么要写测试
接口测试可以帮你确认:
- 路由地址没有写错
- 参数校验符合预期
- 成功响应结构正确
- 错误状态码正确
FastAPI 提供 TestClient,可以不用真正启动服务器就测试接口。
四、安装 pytest
如果使用 fastapi[standard],接口测试需要的基础 HTTP 客户端依赖通常已经具备。
五、最简单的测试
main.py:
test_main.py:
运行:
六、测试参数校验
测试:
七、测试 POST 请求
测试:
八、测试 lifespan
如果要让测试触发生命周期,使用 with TestClient(app)。
九、测试文件放哪里
推荐结构:
运行:
初学阶段不用追求测试覆盖率很高,但至少给核心接口写几个成功和失败用例。

