在 django 中,我试图在测试数据库上运行测试,但我似乎无法让测试数据库正确站立......
我的真实数据库上有 226 个模型,但是当我运行 python manage.py test (测试位置)时,它很快就会中断,引用测试数据库中不存在的字段。
psycopg2.errors.UndefinedColumn: column core_division.display_name does not exist
快速查看测试数据库(因为它崩溃了,所以它不会拆卸数据库,所以我可以查看它)仅显示创建了 47 个表,并且果然该特定字段不存在。
下面是我的 config.settings.test 文件中的数据库设置:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'myscore',
'USER': env('DEFAULT_DATABASE_USER'),
'PASSWORD': env('DEFAULT_DATABASE_PASSWORD'),
'HOST': 'localhost',
'PORT': '',
'TEST': {
# 'MIRROR': 'default',
'SERIALIZE': False,
# 'MIGRATE': False,
}
},
}
我尝试做的解决方法是应用“迁移”:False 选项。
当我执行此操作(应用 --keepdb)时,我看到测试数据库有 195 个表(并且确实具有之前未创建的字段)。所以这个更好。没有失败/崩溃。
但是...我似乎无法从数据库写入/读取任何内容,我不知道为什么...
所以...我一直在做的是打开 'MIRROR': 'default' ,这似乎不会启动测试数据库,而是从我的真实数据库写入/读取...这显然不理想。 ..但似乎无法让测试数据库正常工作。
知道发生了什么/如何让测试数据库正确启动并随后允许我写入它?
如果没有完整的堆栈跟踪,很难知道,但很可能您丢失了迁移。请检查:
migrations
文件夹。./manage.py makemigrations
不会创建任何新的迁移。如果确实如此...将他们提交!如果您可以将您的问题更新为完整的堆栈跟踪,我也许能够提供更好的诊断! 🙇