已将on_commit函数添加到Django 1.9中,以便能够在当前事务提交后触发操作(例如,Celery任务)。如何在不清除数据库的情况下测试Django on_commit挂钩?
他们稍后提到in the docs应该使用TransactionTestCase
来测试依赖于该功能的功能。但是,与TestCase
(使用事务并将其折回)不同,在每次测试后,TransactionTestCase
会清空整个数据库。
不幸的是,我有数据迁移,它会在数据库中预加载一些有用的数据,这意味着在第一次测试清除数据库后,后续测试不再工作。
我结束了由嘲讽on_commit
诉诸使坏:
with mock.patch.object(django.db.transaction, 'on_commit', lambda t: t()):
test_something()
有没有更好的办法?
其实你的解决办法是没有那么糟糕。我不想使用'TransactionTestCase',因为它对我的用例(大型'setUp'和大量的灯具)速度很慢。 – Palasaty