2013-07-09 177 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