问题:当我将 UpdateCacheMiddleware 和 FetchFromCacheMiddleware 添加到我的 Django 项目时,我得到了单元测试失败。这与我使用的 CACHE_BACKEND 无关(现在我使用的是 locmem://,但是当我使用 file:///path_to_cache 时错误是一样的)
我的中间件:
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',
)
我所有的测试失败都如下所示:'NoneType' object is 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
当我在网上搜索此问题时,我一定遗漏了某些东西(或做错了什么),但似乎没有人遇到它。
重现步骤:
- 启动一个新的django项目(django-admin.py startproject myproject)并配置settings.py
- 将 CACHE_BACKEND 添加到 settings.py 并添加来自 Django 的两个缓存中间件
- 运行 python manage.py 测试
注意:使用 dummy:// 缓存时只有一次测试失败,记录在:http ://code.djangoproject.com/ticket/11640