Справочная информация: я использую промежуточное программное обеспечение django-multihost
(http://effbot.org/zone/django-multihost.htm), чтобы разрешить моему одиночному приложению django отвечать на разные имена хостов из одного проекта. Промежуточное программное обеспечение изменяет ROOT_URLCONF
(т.е. файл urls.py
) в заголовке HTTP-запроса 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 по умолчанию, а не тот, который будет вызывать Middleware. Не имеет значения, если я явно введу имя хоста в URL, как в client.get("http://secondarysite/trends")
.
Как я могу тестировать на других виртуальных сайтах с помощью тестового клиента django? Я хотел бы вызвать промежуточное программное обеспечение в тесте, чтобы я мог проверить эту логику. Но если мне нужно, я бы сделал что-то хакерское, например, установил ROOT_URLCONF на время тестов, но я не уверен, как это сделать.