2010-07-10 6 views
2

Problème: Lorsque j'ajoute UpdateCacheMiddleware et FetchFromCacheMiddleware à mon projet Django, j'obtiens des échecs unittest. C'est quel que soit le CACHE_BACKEND que je l'utilise (en ce moment je suis en utilisant locmem: //, mais les erreurs sont les mêmes quand je l'utilise file: /// path_to_cache)L'utilisation de Django Cache Middleware entraîne l'échec des tests unitaires contrib.auth

Mon Middleware:

MIDDLEWARE_CLASSES = (
    'django.middleware.cache.UpdateCacheMiddleware', 
    'django.middleware.common.CommonMiddleware', 
    'django.contrib.sessions.middleware.SessionMiddleware', 
    'django.middleware.csrf.CsrfViewMiddleware', 
    'django.contrib.auth.middleware.AuthenticationMiddleware', 
    'django.contrib.messages.middleware.MessageMiddleware', 
    'django.middleware.cache.FetchFromCacheMiddleware', 
) 

Tous mes échecs de test ressemblent à celui ci-dessous: objet « NoneType » est unsubscriptable

====================================================================== 
Error: test_last_login (django.contrib.auth.tests.remote_user.RemoteUserTest) 
---------------------------------------------------------------------- 
Traceback (most recent call last): 
    File "C:\Python26\lib\site-packages\django\contrib\auth\tests\remote_user.py", 
line 87, in test_last_login 
    self.assertNotEqual(default_login, response.context['user'].last_login) 
TypeError: 'NoneType' object is unsubscriptable 

Je dois manquer quelque chose (ou faire quelque chose de mal) comme je l'ai cherché sur le web pour cette question, mais personne ne semble avoir l'a rencontré.

Procédure pour reproduire:

  1. Démarrer un nouveau projet django (django-admin.py startproject myproject) et configurer settings.py
  2. Ajouter à CACHE_BACKEND settings.py et ajoutez les deux intergiciels Cache de Django
  3. Run test python manage.py

notes: Ther e est un seul échec de test lors de l'utilisation de dummy: // cache et il est documenté à: http://code.djangoproject.com/ticket/11640

Répondre

4

La solution aux tests défaillants consiste à définir CACHE_MIDDLEWARE_SECONDS sur 0 (par ex. mettez ceci à 0 dans votre environnement de dev). Cela permettra aux tests django.contrib de passer tous.