Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 是否将HTTP_用户_代理添加到Django RequestFactory请求?_Python_Django_Django Views_Django Testing - Fatal编程技术网

Python 是否将HTTP_用户_代理添加到Django RequestFactory请求?

Python 是否将HTTP_用户_代理添加到Django RequestFactory请求?,python,django,django-views,django-testing,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) 问题是主页视图调用的函数需要request.META[“HTTP\u USER\u AGE

是否有方法将用户代理字符串添加到RequestFactory请求对象?我有以下测试:

def test_homepage(self):
    request = self.factory.get(reverse('home'))
    response = views.home_page(request)
    self.assertEqual(response.status_code, 200)
问题是主页视图调用的函数需要request.META[“HTTP\u USER\u AGENT”]。因此,上面的测试引发了一个keyrerror,因为它不知道HTTP\u USER\u代理是什么。有没有办法将其添加到RF的请求对象中?我知道如果我使用Django的客户机对象,我可以添加它,但我不想这样做,因为我想在测试中消除所有中间件的参与


谢谢。

将HTTP\u USER\u代理作为关键字参数传递

request = self.factory.get(reverse('home'), HTTP_USER_AGENT='Mozilla/5.0')

via

正如文档所示(我已经通过第二次测试向自己证明了),如果您使用的是测试客户机类,您的建议是有效的。但是,如果您使用的是RequestFactory对象,您仍然会得到我描述的KeyError。@Robert,我自己测试过。它同时适用于客户端RequestFactory.get。@Robert,顺便说一句,我使用了Django 1.5.1。我用于测试的视图函数只是打印用户代理:
def home(request):return HttpResponse(request.META['HTTP\u User\u Agent')
我相信你,但我的测试仍然失败。也许是因为我的代码的编写方式。my views.home_页面函数中的第一行是“type_of_device=detect_device(request)”,detect_device函数中的第一行是“user_agent=request.META[“HTTP_user_agent”]”。可能是我们传递到主页视图的HTTP_用户_代理没有传递到它调用的detect_设备函数中吗?