如何使用站点框架/多个设置在django项目中测试多个站点

时间:2012-09-23 17:54:58

标签: django django-testing

我有一个项目在许多wsgi应用程序之间共享一个数据库(来自contrib的网站框架正在大量使用)。每个wsgi应用程序都在项目目录中拥有它自己的模块,并且它自己的settings.py在主项目目录中扩展global_settings.py(每个设置文件只是从global_settings导入*)。此外,一些网站有自己的网址和额外的视图/模板,无法全局测试。所有网站共享大多数应用程序。同样由于视图的定制(子视图cbl视图),我需要分别测试每个站点。 Django只在app dirs中预计tests.py,所以我无法发出:

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

因为first_site只是一个python模块而不是django应用程序。我怎么能克服这个?

2 个答案:

答案 0 :(得分:0)

我发现了这个: 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

似乎合法。

答案 1 :(得分:0)

我现在才开始进行多站点测试,并提出了一个原始解决方案:

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)