Как проверить commit_manually внутри юнит-тестов Django

Как вы тестируете код Django, который использует commit_manually() из unittest?

У меня есть долгосрочный метод, который удаляет большое количество записей, достаточно, чтобы он не мог сохранить все эти изменения в одной транзакции, не занимая всю системную память. Так что я заверну @commit_manually и периодически звонить commit(),

Однако в Django 1.6 все юнит-тесты теперь обернуты в transaction.atomic(), поэтому, если я пытаюсь сделать какие-либо ручные коммиты, я получаю ошибку:

django.db.transaction.TransactionManagementError: Это запрещено, когда активен "атомарный" блок.

Какой обходной путь для этого?

1 ответ

Использование TransactionTestCase вместо TestCase должно дать вам эту возможность.

https://docs.djangoproject.com/en/1.6/topics/testing/tools/

https://docs.djangoproject.com/en/1.6/topics/testing/advanced/

Другие вопросы по тегам