【发布时间】:2013-04-22 09:03:04
【问题描述】:
我一直在为我的一个 django 应用程序编写测试,并且一直在寻找解决这个问题已经有一段时间了。我有一个视图,可以使用django.contrib.messages 针对不同情况发送消息。视图如下所示。
from django.contrib import messages
from django.shortcuts import redirect
import custom_messages
def some_view(request):
""" This is a sample view for testing purposes.
"""
some_condition = models.SomeModel.objects.get_or_none(
condition=some_condition)
if some_condition:
messages.success(request, custom_message.SUCCESS)
else:
messages.error(request, custom_message.ERROR)
redirect(some_other_view)
现在,在测试此视图时,client.get 的响应不包含包含 messages 的 context 字典,因为此视图使用重定向。对于呈现模板的视图,我们可以使用messages = response.context.get('messages') 访问消息列表。我们如何才能访问messages 以获得重定向视图?
【问题讨论】:
-
不确定这是否符合您的需要,但您可以通过 get 变量来确定发生了什么:
redirect(reverse(some_other_view) + '?user_added=true') -
我实际上已经在测试我的测试视图中使用的条件。这里我说的是显式测试发送的消息。
标签: django redirect testing messages django-context