我正在使用SQLAlchemy的fixture来创建一些集成测试。
我想将SQLAlchemy置于“永不提交”模式,以防止更改被写入数据库,以便我的测试完全相互隔离。有没有办法做到这一点?
我最初的想法是,也许我可以用模拟对象替换Session.commit
;但是我不确定是否有其他事情可能具有相同的效果,如果我要沿着这条路走下去,我也需要嘲笑。
答案 0 :(得分:1)
作用域会话管理器默认为每个连接返回相同的会话对象。因此,可以用.commit
替换.flush
,并在调用会话管理器时保持更改。
这会阻止提交。
要回滚所有更改,应使用session.transaction.rollback()
。