【问题标题】:How to test multiple sites in django project using sites framework/multiple settings如何使用站点框架/多个设置在 django 项目中测试多个站点
【发布时间】:2012-09-15 07:19:27
【问题描述】:

我有一个项目,它在许多 wsgi 应用程序之间共享一个数据库(来自 contrib 的站点框架正在大量使用)。每个 wsgi 应用程序在项目目录中都有自己的模块,它自己的 settings.py 扩展主项目目录中的 global_settings.py(每个设置文件只是从 global_settings 导入 *)。此外,一些网站有自己的 url 和额外的视图/模板,无法在全球范围内进行测试。不过,所有网站都共享大多数应用程序。另外由于视图的自定义(子类 cbl 视图),我需要分别测试每个站点。 Django 期望 tests.py 仅在应用程序目录中,所以我不能发出:

./manage.py test first_site --settings=first_site.settings

因为first_site 只是一个 python 模块而不是 django 应用程序。我该如何克服这个问题?

【问题讨论】:

    标签: django django-testing


    【解决方案1】:

    我发现了这个: http://pypi.python.org/pypi/django-discover-runner

    安装 django-discover-runner 后(以 pip 为例):

    pip install -U django-discover-runner
    

    您只需在自定义站点设置中添加一行:

    TEST_RUNNER = 'discover_runner.DiscoverRunner'
    

    这个命令将从称为first_site的普通python模块运行测试

    ./manage.py test first_site --settings=first_site.settings
    

    似乎合法。

    【讨论】:

      【解决方案2】:

      我只是开始多站点测试,现在想出了一个原始的解决方案:

      from django.test import override_settings
      
      @override_settings(SITE_ID=1)
      def test_multisite_one(self):
          from django.contrib.sites.models import Site
          self.assertEqual(1, Site.objects.get_current().id)
      

      【讨论】:

        猜你喜欢
        • 2017-03-31
        • 2016-02-27
        • 2011-04-14
        • 2011-03-23
        • 1970-01-01
        • 2011-01-14
        • 2013-10-01
        • 2012-01-10
        • 2010-11-27
        相关资源
        最近更新 更多