2013-07-09 13 views
6

C'è un modo per aggiungere una stringa di agente utente a un oggetto richiesta RequestFactory? Ho il seguente test:Aggiungi HTTP_USER_AGENT alla richiesta Django RequestFactory?

def test_homepage(self): 
    request = self.factory.get(reverse('home')) 
    response = views.home_page(request) 
    self.assertEqual(response.status_code, 200) 

Il problema è che la vista home_page chiama una funzione che richiede request.META [ "HTTP_USER_AGENT"]. Di conseguenza, il test sopra riportato genera un KeyError perché non sa cosa sia HTTP_USER_AGENT. C'è un modo per aggiungerlo all'oggetto di richiesta della RF? So che posso aggiungerlo se uso l'oggetto Client di Django ma preferirei non seguire questa strada perché voglio eliminare tutto il coinvolgimento del middleware nel mio test.

Grazie.

risposta

8

Passa HTTP_USER_AGENT come argomento della parola chiave.

request = self.factory.get(reverse('home'), HTTP_USER_AGENT='Mozilla/5.0') 

https://docs.djangoproject.com/en/1.5/topics/testing/overview/#django.test.client.Client.get via https://docs.djangoproject.com/en/1.5/topics/testing/advanced/#django.test.client.RequestFactory

+0

Come la documentazione fa spettacolo (e ho dimostrato a me stesso tramite una seconda prova), il vostro suggerimento funziona se si sta usando la classe di test del client. Tuttavia, verrà comunque visualizzato l'errore KeyError descritto se si sta utilizzando un oggetto RequestFactory. – William

+0

@Robert, mi sono messo alla prova. Funziona sia per Client, RequestFactory.get. – falsetru

+0

@Robert, BTW, ho usato Django 1.5.1. – falsetru