我想通過使用LiveServerTestCase到django 1.7的測試移植現有的django 1.6項目。我已將initial_data裝置轉換爲數據遷移。當我這樣做時,我所有的服務器測試都因爲數據被刷新而失敗。然後,我偶然發現了TransactionTestCase的serialized_rollback選項,並將其添加到我的測試類中。但是現在我發現了以下錯誤,當我運行我的測試:https://github.com/tctimmeh/djangomigrateDjango事務測試案例引發sqlite上的數據遷移IntegrityError
型號:
class SomeData(Model):
value = IntegerField()
的
sqlite3.IntegrityError: UNIQUE constraint failed: django_content_type.app_label, django_content_type.model
我在一個示例應用程序複製此問題數據遷移:
def createData(apps, schema_editor):
SomeData = apps.get_model('mtestapp', 'SomeData')
db_alias = schema_editor.connection.alias
SomeData.objects.using(db_alias).bulk_create([
SomeData(value = 1),
])
class Migration(migrations.Migration):
dependencies = [
('mtestapp', '0001_initial'),
]
operations = [
RunPython(createData)
]
並測試:
class TestIt(TransactionTestCase):
serialized_rollback = True
def test_one(self):
self.assertEqual(1, SomeData.objects.all().count())
def test_two(self):
self.assertEqual(1, SomeData.objects.all().count())
其中一個測試通過。另一個提出上述IntegrityError。任何想法,爲什麼這可能是?
編輯:我挖掘了一下,它看起來像django.contrib.contenttypes應用程序有一個post_migrate管理命令,在測試數據庫刷新後運行。有沒有辦法阻止這個命令運行?