Я писал тесты для одного из своих приложений django и давно искал эту проблему. У меня есть представление, которое отправляет сообщения с использованием django.contrib.messages
для разных случаев. Вид выглядит примерно так:Django Testing - проверить сообщения для просмотра, которое перенаправляет
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
«s не содержит context
словаря, который содержит messages
как это вид использует редирект. Для представлений, отображающих шаблоны, мы можем получить доступ к списку сообщений, используя messages = response.context.get('messages')
. Как мы можем получить доступ messages
для просмотра, которое перенаправляет?
Не уверен, если это будет соответствовать вашим потребностям, но вы можете передать получить переменные, чтобы определить, что произошло: 'перенаправлять (обратный (some_other_view) + '? user_added = true') ' –
Я уже тестирую условие, которое используется в представлении в моем тесте. Здесь я говорю о явном тестировании отправленного сообщения. – Amyth