誰かがPostgres DBのエラー、特にIntegrityErrorを正しくテストする方法を教えてください。例えば、私は次のテストを持っている:django Postgres 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)
それが作品、[OK]をpostgresにどのようなので、ここでは、IntegrityErrorをキャッチが、その後、すべての操作は失敗します。私はドキュメントで私はtransaction.rollback()を使用することができます参照してください:どこで:テストまたはsave()メソッドで?
また、私は手でロールバックを書くのが好きではありません。どうしてジャンゴは保存しようとしないのですか?それが失敗すると、IntegrityErrorを与えて仕事を続けましょう。
私はジャンゴ1.1
ありがとうございます。したがって、ライブコードでは、IntegrityErrorを捕まえた後はすべて正常になりますか?それとも明示的にロールバックする必要がありますか? –
あなた自身のコードでIntegrityErrorを引き起こすことは避け、SQLエラーをバグとして扱います。したがって、変更を行う前に確認してください。変更ができない場合は、ロールバックして問題をユーザーに報告できます。または、変更をスキップするか、代わりに別の変更を加えることもできます。 –