【发布时间】:2018-07-04 01:34:04
【问题描述】:
如何在 Django 单元测试中测试禁用 autocommit 并使用保存点的代码?
默认的 Django unittest 类将所有测试包装在 @atomic 装饰器中,这通常正是您想要的,以确保 sqlite 数据库在测试之间被重置。但是,任何在测试中触及transaction.set_autocommit() 的代码都会引发错误:
TransactionManagementError: This is forbidden when an 'atomic' block is active.
即使它在单元测试之外也能正常工作。
如何在单元测试中临时禁用事务自动提交,以便测试手动提交?
【问题讨论】:
-
我不完全确定这在测试中是否有效,但请尝试在测试函数中添加
@transaction.commit_on_success装饰器 -
@SimasJoneliunas 该装饰器在几个版本前已被删除,我无法使用。
标签: python django django-unittest