2013-07-09 10 views
6

Gibt es eine Möglichkeit, einem RequestFactory-Anforderungsobjekt eine User-Agent-Zeichenfolge hinzuzufügen? Ich habe den folgenden Test:HTTP_USER_AGENT zu Django RequestFactory Anfrage hinzufügen?

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

Das Problem ist, dass die home_page Ansicht, die eine Funktion aufruft, die request.META [ "HTTP_USER_AGENT"] erfordert. Als Ergebnis löst der obige Test einen KeyError aus, weil er nicht weiß, was HTTP_USER_AGENT ist. Gibt es eine Möglichkeit, es dem Anfrageobjekt des RF hinzuzufügen? Ich weiß, dass ich es hinzufügen kann, wenn ich Djangos Client-Objekt verwende, aber ich würde diesen Weg lieber nicht gehen, da ich alle Middleware-Beteiligung in meinem Test eliminieren möchte.

Vielen Dank.

Antwort

8

Übergeben Sie HTTP_USER_AGENT als Schlüsselwortargument.

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 über https://docs.djangoproject.com/en/1.5/topics/testing/advanced/#django.test.client.RequestFactory

+0

Da die Dokumentation Show tut (und ich habe über einen zweiten Test mir bewiesen), arbeitet Ihr Vorschlag, wenn man die Test-Client-Klasse verwendet. Sie erhalten jedoch weiterhin den KeyError, den ich beschrieben habe, wenn Sie ein RequestFactory-Objekt verwenden. – William

+0

@Robert, ich habe mich selbst getestet. Es funktioniert sowohl für Client, RequestFactory.get. – falsetru

+0

@Robert, BTW, ich habe Django 1.5.1 benutzt. – falsetru