测试
Flask 内置测试客户端(test client),无需真正启动 HTTP 服务器即可对路由和业务逻辑做单元测试与集成测试。配合 pytest 使用体验最佳。
安装依赖
项目结构
测试夹具(conftest.py)
应用工厂模式在测试中的价值就体现在这里——为测试创建独立配置的应用实例:
测试路由
client.get/post/put/delete 支持 json=(自动序列化并设置 Content-Type)、data=(表单)、headers=、query_string= 等参数。
测试登录态
session_transaction() 可以在请求外直接读写 session:
测试需要应用上下文的代码
视图之外的代码(模型方法、工具函数)若用到 current_app、数据库等,需要手动推入上下文:
运行与覆盖率
实践建议
- 每个测试保持独立:依赖内存数据库 + 夹具中建表/删表,避免测试间互相污染。
- 优先测试行为(状态码、响应内容、数据库副作用),而不是内部实现细节。
- 外部服务(邮件、第三方 API)用
unittest.mock或responses库打桩。