背景: ミドルウェア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 を設定するなどのハッキーなことをしたいと思いますが、その方法がわかりません。