我正在尝试测试一个 UpdateView,它将一条消息添加到重定向的成功页面。看来我的问题来自messages
因为 pytest 返回:
django.contrib.messages.api.MessageFailure:如果不安装 django.contrib.messages.middleware.MessageMiddleware,则无法添加消息
我的测试代码是:
def test_authenticated_staff(self, rf):
langues = LanguageCatalog.objects.create(
lang_src='wz',
lang_dest='en',
percent='4'
)
req = rf.get(reverse("dashboard.staff:lang-update", kwargs={'pk': langues.pk}))
data = {'lang_src': 'it',
'lang_dest': 'en',
'percent': '34'}
req = rf.post(reverse(
"dashboard.staff:lang-update", kwargs={'pk': langues.pk}), data=data)
req.user = UserFactory()
resp = views.LangUpdateView.as_view()(req, pk=langues.pk)
我准确地说MessageMiddleware
存在于MIDDLEWARE
设置。我用Django==2.0.13
.
我找到了解决方案。为了测试此类请求,您需要首先使用会话对其进行注释,然后使用消息对其进行注释。实际上这意味着添加这些行:
from django.contrib.messages.middleware import MessageMiddleware
from django.contrib.sessions.middleware import SessionMiddleware
# in your test method:
"""Annotate a request object with a session"""
middleware = SessionMiddleware()
middleware.process_request(req)
req.session.save()
"""Annotate a request object with a messages"""
middleware = MessageMiddleware()
middleware.process_request(req)
req.session.save()
# and then (in my case)
resp = views.LangUpdateView.as_view()(req, pk=langues.pk)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)