2013-07-09 176 views
6

有沒有辦法將用戶代理字符串添加到RequestFactory請求對象?我有以下測試:將HTTP_USER_AGENT添加到Django RequestFactory請求中?

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

的問題是,home_page觀點呼籲,要求request.META [「HTTP_USER_AGENT」]的功能。因此,上面的測試引發了一個KeyError,因爲它不知道HTTP_USER_AGENT是什麼。有沒有辦法將它添加到RF的請求對象?如果我使用Django的Client對象,我知道我可以添加它,但我不想走這條路線,因爲我想消除所有中間件參與測試。

謝謝。

回答

8

通過HTTP_USER_AGENT作爲關鍵字參數。

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

+0

由於文檔中則顯示(我已經通過第二次試驗證明我自己),你的建議如果使用測試客戶端類的工作。不過,如果您使用的是RequestFactory對象,仍然會得到我描述的KeyError。 – William

+0

@羅伯特,我測試了一下自己。它適用於Client,RequestFactory.get。 – falsetru

+0

@Robert,BTW,我用Django 1.5.1。 – falsetru