当我运行 python manage.py test 时...只有一些表/字段在测试数据库中创建

问题描述 投票:0回答:1

在 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' ,这似乎不会启动测试数据库,而是从我的真实数据库写入/读取...这显然不理想。 ..但似乎无法让测试数据库正常工作。

知道发生了什么/如何让测试数据库正确启动并随后允许我写入它?

python django unit-testing pytest django-testing
1个回答
0
投票

如果没有完整的堆栈跟踪,很难知道,但很可能您丢失了迁移。请检查:

  • 您的所有 Django 应用程序都有一个
    migrations
    文件夹。
  • 运行
    ./manage.py makemigrations
    不会创建任何新的迁移。如果确实如此...将他们提交!

如果您可以将您的问题更新为完整的堆栈跟踪,我也许能够提供更好的诊断! 🙇

© www.soinside.com 2019 - 2024. All rights reserved.