Как проверить 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/