我有一个对settings.DEBUG
进行检查的迁移,我使用
from django.conf import settings
字符串
如果它是False
,我希望这是一个生产环境(或生产环境),所以我导入了一个secret manager secret以在createsuperuser迁移函数中使用,否则它是本地主机或本地dev,我只是使用一个硬编码字符串。
我的问题是,在我的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
设置,但它似乎没有这样做。
我尝试过的是,如果我在设置覆盖文件中直接添加一个print语句,在我的设置覆盖下面的DEBUG,我可以看到设置在打印语句发生的点是正确的。但是如果我在迁移中的块中添加一个print语句,我可以看到设置不是来自覆盖文件,因为它被设置为False
。
如果我尝试将from django.test import override_settings
和@override_settings(DEBUG=True)
应用到测试类,它仍然不会将DEBUG
读取为True
,应用到基类也不会,我没有在任何地方使用self.settings
,我仍然试图找出发生了什么。
我意识到我没有说我使用StaticLiveServerTestCase
作为我的类,我在我的测试基类中继承了它。
1条答案
按热度按时间63lcw9qa1#
所以,正如我在我的帖子评论中指出的那样,这是预期的行为,但我仍然需要一个解决方案来运行
DEBUG = True
,这可以通过将--debug-mode
的命令行参数添加到./manage.py test
命令来实现。