我有一个迁移,它会检查
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
作为我在测试基类中继承的类。
因此,正如我在帖子的评论中指出的那样,这是预期的行为,但我仍然需要一个使用
DEBUG = True
运行的解决方案,这可以通过向 --debug-mode
命令添加 ./manage.py test
命令行参数来实现。