Может кто-нибудь объяснить мне, как правильно тестировать ошибки Postgres DB, особенно IntegrityError. Например, у меня есть следующий тест:
class TestSlugs(TestCase):
# This slug must be unique
b = BookPublisher(slug=self.duplicate_slug)
self.assertRaises(IntegrityError, b.save)
#check if there's only one BookPublisher
self.assertEquals(BookPublisher.objects.count(), 1)
Здесь он перехватывает IntegrityError, но тогда все операции завершатся неудачно, потому что именно так работает postgres, хорошо. Я вижу в документах, что я могу использовать транзакцию.rollback (), но где: в тесте или в методе save ()?
Кроме того, мне не нравится идея написания откатов вручную, почему django не может просто попытаться сохранить, а в случае неудачи - дать мне IntegrityError и позволить мне продолжать работать.
Я использую Django 1.1