【问题标题】:How to add apps to INSTALLED_APPS for tests?如何将应用程序添加到 INSTALLED_APPS 进行测试?
【发布时间】:2013-12-27 22:40:12
【问题描述】:

目前,我们只能在提供的test_project 中运行./manage.py test autocomplete_light,因为它已将它们添加到INSTALLED_APPS。

由于用户需求,我对 v2 的目标是在用户项目中启用测试。首先要做的是将example apps 移动到subdir of the module。

现在,我只需要能够在测试用例中添加它们和它们的 url。

我尝试了overriding settings with the provided method,但这会覆盖在数据库创建之后的设置。

【问题讨论】:

    标签: python django


    【解决方案1】:

    您可以通过设置 DJANGO_SETTINGS_MODULE 环境变量,使用特殊的 settings.py 运行测试。这个特殊的“testsettings.py”可以从普通的settings.py中导入*,然后将必要的额外应用程序添加到INSTALLED_APPS中。

    请记住,settings.py 文件只是普通的 Python 模块,因此您可以添加任何您想要从某处获取额外应用列表的逻辑。

    【讨论】:

    • 好主意!用户将无法使用 ./manage.py test 并且没有 --settings 标志来运行测试,对吗?
    • 我不确定您的设置,确切的用户和用户项目等等,但您可能可以设置一个小的帮助脚本,使用正确的设置文件调用测试运行器?跨度>
    • 这可行,我要试试。感谢您的反馈!
    【解决方案2】:

    Django 提供了modify_settings() 上下文管理器,以便更轻松地更改设置:

    class TestSomeApp(TestCase):
    
        def test_some_app(self):
            with self.modify_settings(
                INSTALLED_APPS={"prepend": "some_app"}
            ):
                # ...
    

    https://docs.djangoproject.com/en/dev/topics/testing/tools/#django.test.SimpleTestCase.modify_settings

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-23
      • 1970-01-01
      • 2012-01-13
      • 2020-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多