Python 现代开发学习笔记

(十一)用失败操作检查整批回退

测试在插入 b104 时通过 SQLite 触发器故意抛错。这时前几次 INSERT 已执行,但事务尚未提交。异常离开连接上下文,整个事务回滚。重新连接后,books、runs、rejected 都没有留下这批记录,原始 JSON 则已经保存。

在写到 b104 时制造失败,随后重新连接检查三张表,再重放同一 JSON 完成导入

修复触发器后,将原快照交给 replay,六本书和一份批次报告一起提交。这个测试同时检查了三个环节:原始输入能否留存、写入是否一起回退、重放是否复用同一编号。完整实现见 事务与重放测试。

再把第二页请求改成失败响应,检查数据库保持先前状态;把同批同编号改成不同书名,检查清洗在事务之前停止。沿错误发生的位置检查持久状态,比只断言“抛出了异常”更能发现部分写入。

笔记正文与全部题解 · Ctrl / ⌘ K