Я пишу тесты для одного из моих приложений 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
не содержит словаря context
, содержащего messages
, так как это представление использует перенаправление. Для представлений, отображающих шаблоны, мы можем получить доступ к списку сообщений, используя messages = response.context.get('messages')
. Как мы можем получить доступ messages
к представлению, которое перенаправляет?
redirect(reverse(some_other_view) + '?user_added=true')
- person Aamir Adnan   schedule 22.04.2013