django_nose.FastFixtureTestCase
からdjango.test.TestCase
(またはさらに控えめなdjango.test.TransactionTestCase
)に移動するのに問題があります。私はDjango 1.7.11を使用しています。私はPostgres 9.2をテストしています。Django TestCaseでフィクスチャを使用すると、重複したキーのためにIntegrityErrorが発生する
私はTestcase
クラスに3つのフィクスチャファイルをロードしています。クラスには2つのテストが含まれています。個々のテストを個別に1回実行すると(manage test test_file:TestClass.test_name
)、それぞれのテストが動作します。私は一緒に、(manage test test_file:TestClass
)を実行した場合、私は私に
IntegrityError: Problem installing fixture '<path>/data.json': Could not load <app>.<Model>(pk=1): duplicate key value violates unique constraint "<app_model_field>_49810fc21046d2e2_uniq"
を取得し、私は単一の実行中にテストを実行すると、それだけ起こるので、DBが実際にフラッシュ取得またはバックテスト間ロールされていないように見えます。
私はDjangoのコードを強化しました、それは彼らあるがフラッシュまたはロールバックばかりのように見える - 私はTestCase
またはTransactionTestCase
をしようとしているかどうかに応じて。
私が見てしなければならない他に何
(FastFixtureTestCase
https://github.com/django-nose/django-nose/issues/220のため、私は離れてから動いていますか)?これは単純な問題であるように思われ、django.test.TestCase
とDjango.test.TransactionTestCase
のために設計されています。
編集:私は、単一のテストでこれを数回を再現するために管理してきました
:
テストクラスの詳細やこのようにそれほどルックス:
class MyTest(django.test.TransactionTestCase): # or django.test.TestCase
fixtures = ['data1.json', 'data2.json', 'data3.json']
def test1(self):
return # I simplified it to just this for now.
def test2(self):
return # I simplified it to just this for now.
を更新私は治具のロードコードで何かを疑う。
あなたが持っているフィールドは、フィクスチャに重複していませんか? – trinchet
テストが孤立しているとすれば、私は確信していると言います。私は確信しています。彼らは最近開発DBからダンプ/作成されています。 – rrauenza
どのように器具をロードしていますか?テストクラスを投稿できますか? – trinchet