我有一个项目在许多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应用程序。我怎么能克服这个?
答案 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
./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)