【发布时间】:2015-08-27 12:21:33
【问题描述】:
我的默认数据库没有被迁移到 Django 的测试数据库中。正在创建一个数据库,其中包含 Django 用于记录测试的默认表(例如 django_content_type 和 django_admin_log),但不是我的应用程序的表。
当我以详细级别 3 (-v 3) 运行测试时,我看到我的应用被归类为 Synchronizing apps without migrations...,这确认没有执行迁移。
但是,我不知道如何告诉 Django 的测试迁移我的应用程序的数据库表。我可以很容易地输出python manage.py makemigrations,但显然这不会延续到测试中。
我错过了什么?
谢谢!
编辑:抱歉,我的意思是没有创建关系。我想测试依赖于数据库中模型的视图。为此,我正在上传夹具(不处理生产数据)。然而,当我尝试上传一个夹具时,我得到一个relation "mymodel" does not exist 错误。
【问题讨论】:
-
正如 vmonteco 所指出的,Django 建立了一个用于测试的并行数据库,每次都会重新构建。该数据库是使用您的 models.py 文件的当前状态创建的,除非您通过固定装置加载它,否则不会有数据,因此迁移通常是无关紧要的。您关心迁移有什么问题?
-
啊,“迁移”可能不是正确的术语。我的意思是关系(模式)
-
你能提供一个最小的例子来说明你的问题是什么吗?这听起来(并且@vmonteco 的更新通过指向教程的链接解决了这个问题)您不太了解 Django 如何“希望”您测试东西。我建议在测试链接中搜索术语“夹具”,以了解如何让测试数据库表具有一些初始值,以便视图从中获取内容
-
请提供您的 models.py 和 test.py 的简化版本(以及 views.py 以确保完整性);这将使故障排除您收到该错误的原因变得更加简单
标签: python django unit-testing testing django-1.8