将HTTP_USER_AGENT添加到Django RequestFactory请求?

时间:2013-07-09 03:10:12

标签: python django django-views django-testing

有没有办法将用户代理字符串添加到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对象,我可以添加它,但我不想走这条路,因为我想在我的测试中消除所有中间件参与。

谢谢。

1 个答案:

答案 0 :(得分:10)

将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