目录 / asyncpg-live-vs-mock-shape
SKILL
未评级
已上架
asyncpg-live-vs-mock-shape
在编写基于 asyncpg 的端点的 pytest mock 时使用,当列类型导致 mock 与实际行为不一致时(如 SUM/COUNT/AVG 返回 Decimal;JSONB 返回 str;UUID 返回 UUID 对象;INET 返回 str)。asyncpg 返回的是原始的 PostgreSQL 类型,不符合直观预期——使用“自然”的 dict/int/float 编写的 mock 能通过形状测试,但真实的数据库调用在实际运行时会失败。当出现以下短语时触发:"asyncpg mock test"、"asyncpg JSONB mock"、"asyncpg returns string for JSONB"、"TypeError Decimal float"、"AttributeError str object no attribute keys"、"mock-and-live diverge for asyncpg"。不要用于基于 psycopg2 的测试(不同驱动,自动转换 JSONB),也不要用于 SQLAlchemy ORM 测试(ORM 会转换类型),或已注册 `set_type_codec('jsonb', ...)` 的 asyncpg 连接(编解码器会处理转换)。
模型生成摘要(rules/v1 · 2026-11-15 04:31):在编写基于 asyncpg 的端点的 pytest mock 时使用,当列类型导致 mock 与实际行为不一致时(如 SUM/COUNT/AVG 返回 Decimal;JSONB 返回 str;UUID 返回 UUID 对象;INET 返回…
这是模型对公开材料的总结,不是官方声明,请以原链内容为准。
这是模型对公开材料的总结,不是官方声明,请以原链内容为准。
存档时间线
| 版本 | 存档时间 | 内容哈希 | 内容 |
|---|---|---|---|
| v1 | 2026-11-15 04:30 | 5ce81163 | 可取 |
版本索引永久保留;内容副本只保留最新 1 份,更早版本仅留索引与哈希(存档时间线的证据链不会因此断裂)。
纠错与举报(发现条目失效、署名有误或涉及侵权?)
提交举报 / 纠错
侵权举报经核验成立后,我们会即时下线该条目并删除已存的内容副本。