2016-12-08 1 views
0

Le test échoue avec l'erreur dans Django 1.9 env, mais les tests fonctionnent parfaitement bien dans 1.10.4 et 1.8. Quelqu'un peut-il jeter de la lumière ici!Django 1.9 erreur unittest pour les messages mais je ne vois pas l'erreur pour 1.10.4 et 1.8

Voici l'erreur

add_message augmentation MessageFailure ('Vous ne pouvez pas ajouter des messages sans avoir à installer' MessageFailure: Vous ne pouvez pas ajouter des messages sans installer django.contrib.messages.middleware.MessageMiddleware

Vérifiez https://travis-ci.org/invaana/Hydronium/builds/182190626 pour les erreurs complètes

views.p y

def contact(request): 
    if request.method == "POST": 
     form = ContactForm(request.POST) 
     if form.is_valid(): 
      form.save() 
      messages.success(request, 'Operation Successful! This is demo. Im not sending any messages') 
     else: 
      form.errors 
      messages.error(request, 'Message not sent, Please fix the errors!.') 
    else: 
     form = ContactForm() 
    return render(request, 'pages/contact.html', {'form': form}) 

tests.py

def test_contactform_valid(self): 
    res = self.client.post(reverse('contact'), {'name':'Ravi','email':'[email protected]', 'text': 'im good' }) 
    self.assertIn('Operation Successful', res.content) 

def test_contactform_invalid(self): 
    res = self.client.post(reverse('contact'), {'name':'Ravi','email':'[email protected]', 'text': '' }) 
    self.assertIn('Message not sent', res.content) 
+0

Regardez dans cette réponse https://stackoverflow.com/questions/11938164/why-dont-my-django -unittests-know-that-messagemiddleware-est-installé –

Répondre

0

Apparemment,

MIDDLEWARE_CLASSES est utilisé dans 1,9, 1,8

Middleware est utilisé dans 1.10.4.

Pour rendre le middleware compatible pour les deux, j'ai utilisé le code suivant dans settings.py

MIDDLEWARE = MIDDLEWARE_CLASSES = [ 
    'django.middleware.security.SecurityMiddleware', 
    'django.contrib.sessions.middleware.SessionMiddleware', 
    'django.middleware.common.CommonMiddleware', 
    'django.middleware.csrf.CsrfViewMiddleware', 
    'django.contrib.auth.middleware.AuthenticationMiddleware', 
    'django.contrib.messages.middleware.MessageMiddleware', 
    'django.middleware.clickjacking.XFrameOptionsMiddleware', 
]