sqlalchemy - 强制它永远不提交?

Mar*_*cin 5 python testing sqlalchemy

我正在使用 SQLAlchemy 的固定装置来创建一些集成测试。

我想将 SQLAlchemy 置于“从不提交”模式,以防止将更改写入数据库,以便我的测试彼此完全隔离。有没有办法做到这一点?

我最初的想法是,也许我可以Session.commit用模拟对象替换;但是我不确定是否还有其他东西可能具有相同的效果,如果我要走这条路,我也需要模拟。

Mar*_*cin 4

默认情况下,作用域会话管理器将为每个连接返回相同的会话对象。因此,可以替换.commit.flush,并使该更改在对会话管理器的调用中持续存在。

这将阻止提交。

要回滚所有更改,应该使用session.transaction.rollback().