HTTP 接口与框架测试客户端
接口测试、单元测试与自动化测试#Python全栈#第十七阶段#接口测试、单元测试与自动化测试#HTTP 接口与框架测试客户端约 1006 字 · 3 分钟阅读
追问显示点击任意追问卡片可收起 / 展开
手工请求接口、进程内测试客户端和真实 HTTP 测试分别能验证什么?
追问 路由、序列化、代理、TLS 和浏览器限制需要在哪些环境观察?为什么接口在进程内通过不代表部署链路完全正确?
FastAPI TestClient 怎样构造请求并读取响应?
追问 查询参数、JSON、表单、文件和请求头怎样分别提交?如何让测试覆盖真实请求解析,而不是直接调用路由函数?
应用使用 lifespan 初始化资源时,测试怎样启动和关闭这些资源?
追问 TestClient 的上下文管理与异步 HTTPX 的 ASGITransport 各需要核对什么?为什么不能默认所有客户端都会自动触发启动和关闭事件?
FastAPI dependency_overrides 怎样替换数据库或外部服务依赖?
追问 覆盖键应指向哪个依赖对象?覆盖后如何恢复,为什么测试权限时不能把所有用户都替换成管理员?
Flask 应用工厂、test_client 与应用上下文怎样配合测试?
追问 怎样创建独立测试配置并验证 Session?仅创建请求上下文是否会执行完整请求分发与 before_request,怎样检查差异?
Django 的测试 Client 与 RequestFactory 有什么区别?
追问 直接调用视图时哪些中间件和用户状态需要补充?force_login 适合哪些业务测试,为什么它不能独自验证真实登录流程?
接口响应除了状态码,还应该断言什么?
追问 业务字段、数据类型、错误结构、响应头和数据库副作用怎样选择?为什么返回 200 但数据没有保存仍然应该失败?
怎样测试错误方法、Content-Type、路径参数与请求格式?
追问 路由不存在、方法不允许、参数校验失败和业务拒绝怎样分别约定?为什么不能把某框架默认错误码当作所有项目必须遵守的规则?
重定向、Cookie 和登录会话应该怎样在接口测试中观察?
追问 自动跟随重定向可能掩盖什么错误?客户端 Cookie 状态如何隔离,怎样同时检查重定向目标和后续访问权限?
怎样组织可维护的接口测试公共代码与测试配置?
追问 登录辅助、请求构造和字段断言如何复用?为什么一个自动吞异常或只返回 True/False 的万能封装会削弱失败定位能力?
框架核对资料: FastAPI:Testing、FastAPI:Dependency Overrides、Flask:Testing、Django:Testing tools。Django 链接对应 5.2 文档,其他版本按项目依赖核对。