运行django test,使用django.conf导入设置的迁移没有使用DJANGO_SETTINGS_MODULE或--settings覆盖设置

ifmq2ha2  于 2023-08-08  发布在  Go
关注(0)|答案(1)|浏览(128)

我有一个对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作为我的类,我在我的测试基类中继承了它。

63lcw9qa

63lcw9qa1#

所以,正如我在我的帖子评论中指出的那样,这是预期的行为,但我仍然需要一个解决方案来运行DEBUG = True,这可以通过将--debug-mode的命令行参数添加到./manage.py test命令来实现。

相关问题