Ich habe Tests für eine meiner Django-Anwendungen geschrieben und habe versucht, dieses Problem seit einiger Zeit zu umgehen. Ich habe eine Ansicht, die Nachrichten mit django.contrib.messages
für verschiedene Fälle sendet. Die Ansicht sieht ungefähr wie folgt aus.Django Testing - Prüfe Nachrichten für eine Ansicht, die umleitet
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)
Jetzt, während diese client.get
‚s Antwort Ansicht Prüfung nicht das context
Wörterbuch enthalten, die die messages
enthält als diese Ansicht eine Umleitung verwendet. Für Ansichten, die Vorlagen rendern, können wir mit messages = response.context.get('messages')
auf die Nachrichtenliste zugreifen. Wie erhalten wir Zugriff auf messages
für eine Ansicht, die umleitet?
Nicht sicher, ob dies Ihren Bedarf passen, aber Sie können Variablen erhalten zu identifizieren passieren, was passiert ist: 'umleiten (Reverse (some_other_view) + '? user_added = true') ' –
Ich teste gerade die Bedingung, die in der Ansicht in meinem Test verwendet wird. Hier spreche ich über das explizite Testen der Nachricht, die gesendet wurde. – Amyth