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