8

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

谢谢你。

4

1 回答 1

15

将 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

于 2013-07-09T03:42:54.133 回答