Background: sto utilizzando il middleware django-multihost
(http://effbot.org/zone/django-multihost.htm) per consentire alla mia singola app django di rispondere a nomi host diversi dallo stesso progetto. Il middleware modifica lo ROOT_URLCONF
(ad esempio il file urls.py
) in base all'intestazione della richiesta HTTP Host:
.Test di pagine django con middleware per multihost
Questo funziona benissimo, ma voglio scrivere alcuni semplici test di integrazione che controllano il corretto caricamento delle pagine. Ecco un esempio di un test di base che controlla se la pagina viene caricata /trends
e che ha il testo "Tendenze per Oggi" su di esso:
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)
Il problema è che questa carica sempre utilizzando il ROOT_URLCONF di default, piuttosto che quello della Il middleware invocerebbe. Non importa se inserisco esplicitamente l'hostname nell'URL come in client.get("http://secondarysite/trends")
.
Come posso eseguire il test sugli altri siti virtuali con il client di prova django? Vorrei invocare il middleware nel test in modo da poter testare quella logica. Ma se ho bisogno di fare qualcosa di hacky come impostare ROOT_URLCONF per la durata dei test, ma non sono sicuro di come farlo.
Perfetto. Grazie! – Leopd