gpt4 book ai didi

python - Django 事务测试用例引发 IntegrityError with data migration on sqlite

转载 作者:行者123 更新时间:2023-11-28 19:20:26 25 4
gpt4 key购买 nike

我正在尝试将一个现有的 django 1.6 项目与使用 LiveServerTestCase 的测试移植到 django 1.7。我已将 initial_data 固定装置转换为数据迁移。当我这样做时,我所有的实时服务器测试都失败了,因为数据被刷新了。然后我偶然发现了 TransactionTestCase 的 serialized_rollback 选项并将其添加到我的测试类中。但是现在我在运行测试时遇到以下错误:

sqlite3.IntegrityError: UNIQUE constraint failed: django_content_type.app_label, django_content_type.model

我在此处的示例应用程序中复制了该问题:https://github.com/tctimmeh/djangomigrate

模型:

class SomeData(Model):
value = IntegerField()

数据迁移:

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 管理命令,它在刷新测试数据库后运行。有没有办法阻止该命令运行?

最佳答案

我在不同的情况下遇到了同样的问题。我删除了 serialized_rollback = True 并在 setUp() 方法中手动添加了测试数据。

关于python - Django 事务测试用例引发 IntegrityError with data migration on sqlite,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26435747/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com