我很难从django_nose.FastFixtureTestCase
to django.test.TestCase
(甚至更保守的django.test.TransactionTestCase
)迁移时遇到了麻烦。我正在使用 Django 1.7.11,并且正在针对 Postgres 9.2 进行测试。
我有一个Testcase
加载三个夹具文件的类。该类包含两个测试。如果我将每个测试单独运行(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"
对我来说,看起来数据库实际上并没有在测试之间被刷新或回滚,因为它只发生在我单次运行测试时。
我已经单步执行了 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.
更新:
我已经通过一次测试成功地重现了这几次,所以我怀疑夹具加载代码中存在某些问题。