运行 django 测试,使用 django.conf 导入设置的迁移未使用 DJANGO_SETTINGS_MODULE 或 --settings 覆盖设置

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

我有一个迁移,它会检查

settings.DEBUG
,我已使用

导入设置
from django.conf import settings

如果是

False
我希望这是一个生产(或生产型)环境,所以我导入一个秘密管理器秘密以在 createsuperuser 迁移功能中使用,否则它是本地托管或本地开发,我'我只是使用硬编码字符串。

我的问题是,在我的

settings.py
中,我已将
DEBUG
设置为 false 作为安全默认值,类似于我将
SECRET_KEY
设置为 None 的方式,这样,如果由于某种原因设置覆盖失败,我会收到错误消息:生成的
SECRET_KEY
.

无论如何,从这一点说回来,我正在尝试运行

./manage.py test --settings=myproject.test
(我也尝试过使用
DJANGO_SETTINGS_MODULE='myproject.test'
的导出)来加载我的
test.py
设置文件,在该文件的顶部它会执行一个
from .settings import *
导入,然后在页面下方我用
DEBUG = True
覆盖设置。

所以在我的迁移中,我

from django.conf import settings
并且我期望加载我的
DJANGO_SETTINGS_MODULE
设置,当我运行我的测试并且它运行我的迁移时,我期望
from django.conf import settings
将使用我的
DJANGO_SETTINGS_MODULE
我运行测试时使用的设置,但似乎并没有这样做。

我尝试过,如果我在设置覆盖文件中直接在调试设置覆盖下方添加一条打印语句,我可以看到该设置在该打印语句发生时设置正确。但是,如果我还在迁移中的块内添加打印语句,我可以看到该设置不是来自覆盖文件,因为它设置为

False

如果我尝试将

from django.test import override_settings
@override_settings(DEBUG=True)
应用于测试类,它仍然不会将
DEBUG
读作
True
,也不会将其应用于基类,我不会在任何地方使用
self.settings
,我仍在尝试找出发生了什么事。

我意识到我没有说过我正在使用

StaticLiveServerTestCase
作为我在测试基类中继承的类。

python django testing settings
1个回答
0
投票

因此,正如我在帖子的评论中指出的那样,这是预期的行为,但我仍然需要一个使用

DEBUG = True
运行的解决方案,这可以通过向
 --debug-mode
命令添加
./manage.py test
命令行参数来实现。

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