背景:我正在使用中间件django-multihost
(http://effbot.org/zone/django-multihost.htm) 允许我的单个 django 应用程序响应来自同一项目的不同主机名。中间件根据HTTP请求头 改变ROOT_URLCONF
(即哪个文件)。urls.py
Host:
这很好用,但我想编写一些简单的集成测试来检查页面是否正确加载。下面是一个基本测试示例,用于检查/trends
页面是否加载以及是否包含“今日趋势”文本:
def test_homepage_loads(self):
client = Client()
client.login(username = 'testing', password = 'testing')
page = client.get("/trends", follow = follow_redirects)
self.assertEquals(page.status_code, 200)
self.assertTrue( page.content.find('Trends for Today') > 0 )
问题是,这总是使用默认的 ROOT_URLCONF 加载,而不是中间件调用的那个。如果我明确地将主机名放入 url 中,则无关紧要client.get("http://secondarysite/trends")
。
如何使用 django 测试客户端在其他虚拟站点上进行测试?我想在测试中调用中间件,以便测试该逻辑。但是如果我需要我会在测试期间做一些像设置 ROOT_URLCONF 这样的骇人听闻的事情,但我不知道该怎么做。