如何在unittests中覆盖Django应用程序设置?

2024-10-02 10:28:51 发布

您现在位置:Python中文网/ 问答频道 /正文

当通过SimpleTestCase.settings()https://docs.djangoproject.com/en/1.8/topics/testing/tools/#django.test.SimpleTestCase.settings)运行测试时,Django允许重写设置。当我试图覆盖Django的一个设置时,这很好用。在

我要为其运行测试的应用程序在特定于应用程序的settings.py中携带自己的设置,其结构如下,以允许覆盖项目范围内的特定于应用程序的设置settings.py

from django.conf import settings
APP_SETTING1 = getattr(settings, 'APP_SETTING1', 'foo')

测试中的以下伪代码显示了问题:

^{pr2}$

为什么不起作用,我怎么能让它起作用?在


Tags: djangopyhttpscomapp应用程序docssettings
3条回答

我也在努力解决同样的问题,我认为唯一的解决办法就是改变方法,只使用django.conf.settings公司直接。在

原因是,如果您使用自定义设置,则在覆盖\u设置或测试用例设置被称为。在

理想情况下,您应该使用并入Django的unittest库来模拟设置。或者,您也可以这样做,但最好是修补:

https://docs.djangoproject.com/en/2.1/topics/settings/#custom-default-settings

你可以直接在应用程序中使用特定的设置

在设置.py公司名称:

TEST_ENVIRONMENT_SETTING = True  # Test setting for my app

在应用程序.py公司名称:

^{pr2}$

或者您可以直接在测试用例中使用

setattr(settings, 'TEST_ENVIRONMENT_SETTING', True)

相关问题 更多 >

    热门问题