2013-07-09 7 views
6

Czy istnieje sposób dodania łańcucha agenta użytkownika do obiektu żądania RequestFactory? Mam następujący test:Dodać HTTP_USER_AGENT do żądania Django RequestFactory?

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

Problem polega na tym, że widok home_page wywołuje funkcję, która wymaga request.META [ "HTTP_USER_AGENT"]. W rezultacie powyższy test powoduje błąd KeyError, ponieważ nie wie, co to jest HTTP_USER_AGENT. Czy istnieje sposób na dodanie go do obiektu żądania RF? Wiem, że mogę go dodać, jeśli używam obiektu klienta Django, ale wolałbym nie iść tą trasą, ponieważ chcę wyeliminować całe zaangażowanie middleware w moim teście.

Dziękuję.

Odpowiedz

8

Podaj HTTP_USER_AGENT jako argument słowa kluczowego.

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

+0

Ponieważ dokumentacja jest widoczny (a ja już udowodnione siebie za pośrednictwem drugiego testu), Twoja sugestia działa, jeśli ktoś jest przy użyciu klasy Test Client. Jednak nadal otrzymasz opis KeyError, który opisałem, jeśli używasz obiektu RequestFactory. – William

+0

@Robert, testowałem siebie. Działa zarówno dla klienta, RequestFactory.get. – falsetru

+0

@Robert, BTW, użyłem Django 1.5.1. – falsetru

Powiązane problemy