Ich habe Probleme, weg von django_nose.FastFixtureTestCase
zu django.test.TestCase
(oder sogar die konservativere django.test.TransactionTestCase
). Ich benutze Django 1.7.11 und ich teste gerade gegen Postgres 9.2.Django TestCase mit Fixtures verursacht IntegrityError aufgrund von doppelten Schlüsseln
Ich habe eine Testcase
Klasse, die drei Fixtures-Dateien lädt. Die Klasse enthält zwei Tests. Wenn ich jeden Test einzeln als einen Lauf ausführe (manage test test_file:TestClass.test_name
), funktionieren beide. Wenn ich sie zusammen laufen, (manage test test_file:TestClass
), erhalte ich
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"
Für mich sieht es aus wie der db eigentlich nicht gespült zu werden oder zurück zwischen den Tests gerollt, da es nur passiert, wenn ich die Tests in einem einzigen Durchlauf laufen .
Ich habe durch den Django-Code getreten und es sieht aus wie sie sind gespült zu werden oder zurückgerollt - je nachdem, ob ich TestCase
oder TransactionTestCase
bin versucht.
(Ich bin weg von FastFixtureTestCase
wegen https://github.com/django-nose/django-nose/issues/220)
Was sollte ich bei der Suche werden? Dies scheint so zu sein, als ob es eine einfache Sache sein sollte und ist genau in dem, was django.test.TestCase
und Django.test.TransactionTestCase
entworfen sind.
Edit:
Die Testklasse mehr oder weniger wie folgt aussieht:
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.
Update:
Ich habe es geschafft, das ein paar Mal mit einem einzigen Test zu reproduzieren, so Ich vermute etwas im Ladecode der Vorrichtung.
Sind Sie sicher, dass das Feld, das Sie als eindeutig haben, nicht in den Fixtures dupliziert wird? – trinchet
Angesichts der Tatsache, dass die Tests isoliert arbeiten, würde ich sagen, ja, ich bin mir sicher. Sie wurden auch kürzlich aus der Entwicklungsdatenbank dump/created. – rrauenza
Wie laden Sie die Fixtures? Könnten Sie die Testklasse veröffentlichen? – trinchet