python - 将 HTTP_USER_AGENT 添加到 Django RequestFactory 请求?

标签 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 View 调用了一个需要 request.META["HTTP_USER_AGENT"] 的函数。结果,上面的测试引发了 KeyError,因为它不知道 HTTP_USER_AGENT 是什么。有没有办法将它添加到 RF 的请求对象中?我知道如果我使用 Django 的 Client 对象我可以添加它,但我不想走这条路,因为我想消除所有中间件参与我的测试。

谢谢。

最佳答案

将 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

关于python - 将 HTTP_USER_AGENT 添加到 Django RequestFactory 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17539254/

相关文章:

python - 使用 Python 的语法分析器并从树中构建文件

.net - Python 中 .Net InvalidOperationException 的类比是什么?

Python Sendgrid 发送带有 PDF 附件的电子邮件

Django - 两个 View ,一个页面

python - 打印排序的字典键和排序的值

python - Django 模型 - 在类中混合模型字段和实例属性

python - from django.db import utils ImportError 无法导入名称 utils?

django - 如何在 Django Rest 框架中登录用户电子邮件或用户名(JWT token )

html - Django : HTML form action directing to view (or url? ) 有 2 个参数

Django 确认电子邮件。将值从 false 更改为 true