Ho scritto dei test per una delle mie applicazioni di django e ho cercato di risolvere questo problema già da un po 'di tempo. Ho una vista che invia messaggi usando django.contrib.messages
per casi diversi. La vista assomiglia a quanto segue.Test di Django - controlla i messaggi per una vista che reindirizza
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)
Ora, durante la prova di questa risposta vista s' client.get
non contiene il dizionario context
che contiene il messages
come questo punto di vista utilizza un reindirizzamento. Per le viste che eseguono il rendering dei modelli, è possibile accedere all'elenco dei messaggi utilizzando messages = response.context.get('messages')
. Come possiamo ottenere l'accesso a messages
per una vista che reindirizza?
Non so se questo si adatta al vostro bisogno, ma si può passare ottenere le variabili per identificare ciò che è successo: 'redirect (inverso (some_other_view) + '? user_added = true') ' –
In realtà sto già testando la condizione utilizzata nella vista del mio test. Qui sto parlando di testare esplicitamente il messaggio che è stato inviato. – Amyth