1

您如何测试使用单元测试中的commit_manually()的 Django 代码?

我有一个长时间运行的方法可以删除大量记录,足以在不消耗所有系统内存的情况下将所有这些更改保留在单个事务中。所以我把它包装起来@commit_manually并定期调用commit().

但是,在 Django 1.6 中,所有单元测试现在都包含在 中transaction.atomic(),所以如果我尝试进行任何手动提交,我会收到错误消息:

django.db.transaction.TransactionManagementError:当“原子”块处于活动状态时,这是禁止的。

有什么办法解决这个问题?

4

1 回答 1

1

使用 TransactionTestCase 而不是 TestCase 应该会给你这种能力。

https://docs.djangoproject.com/en/1.6/topics/testing/tools/#django.test.TransactionTestCase

https://docs.djangoproject.com/en/1.6/topics/testing/advanced/#advanced-features-of-transactiontestcase

于 2014-04-29T16:54:08.047 回答