Переглянути джерело

Fixed #15704 -- Made cache tests more reusable by moving the backend path into a class attribute. Thanks for the patch, jonash

git-svn-id: http://code.djangoproject.com/svn/django/trunk@16008 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Adrian Holovaty 14 роки тому
батько
коміт
fd309996df
1 змінених файлів з 35 додано та 25 видалено
  1. 35 25
      tests/regressiontests/cache/tests.py

+ 35 - 25
tests/regressiontests/cache/tests.py

@@ -34,8 +34,10 @@ class C:
 class DummyCacheTests(unittest.TestCase):
     # The Dummy cache backend doesn't really behave like a test backend,
     # so it has different test requirements.
+    backend_name = 'django.core.cache.backends.dummy.DummyCache'
+
     def setUp(self):
-        self.cache = get_cache('django.core.cache.backends.dummy.DummyCache')
+        self.cache = get_cache(self.backend_name)
 
     def test_simple(self):
         "Dummy cache backend ignores cache set calls"
@@ -727,15 +729,17 @@ def custom_key_func(key, key_prefix, version):
     return 'CUSTOM-' + '-'.join([key_prefix, str(version), key])
 
 class DBCacheTests(unittest.TestCase, BaseCacheTests):
+    backend_name = 'django.core.cache.backends.db.DatabaseCache'
+
     def setUp(self):
         # Spaces are used in the table name to ensure quoting/escaping is working
         self._table_name = 'test cache table'
         management.call_command('createcachetable', self._table_name, verbosity=0, interactive=False)
-        self.cache = get_cache('django.core.cache.backends.db.DatabaseCache', LOCATION=self._table_name, OPTIONS={'MAX_ENTRIES': 30})
-        self.prefix_cache = get_cache('django.core.cache.backends.db.DatabaseCache', LOCATION=self._table_name, KEY_PREFIX='cacheprefix')
-        self.v2_cache = get_cache('django.core.cache.backends.db.DatabaseCache', LOCATION=self._table_name, VERSION=2)
-        self.custom_key_cache = get_cache('django.core.cache.backends.db.DatabaseCache', LOCATION=self._table_name, KEY_FUNCTION=custom_key_func)
-        self.custom_key_cache2 = get_cache('django.core.cache.backends.db.DatabaseCache', LOCATION=self._table_name, KEY_FUNCTION='regressiontests.cache.tests.custom_key_func')
+        self.cache = get_cache(self.backend_name, LOCATION=self._table_name, OPTIONS={'MAX_ENTRIES': 30})
+        self.prefix_cache = get_cache(self.backend_name, LOCATION=self._table_name, KEY_PREFIX='cacheprefix')
+        self.v2_cache = get_cache(self.backend_name, LOCATION=self._table_name, VERSION=2)
+        self.custom_key_cache = get_cache(self.backend_name, LOCATION=self._table_name, KEY_FUNCTION=custom_key_func)
+        self.custom_key_cache2 = get_cache(self.backend_name, LOCATION=self._table_name, KEY_FUNCTION='regressiontests.cache.tests.custom_key_func')
 
     def tearDown(self):
         from django.db import connection
@@ -746,7 +750,7 @@ class DBCacheTests(unittest.TestCase, BaseCacheTests):
         self.perform_cull_test(50, 29)
 
     def test_zero_cull(self):
-        self.cache = get_cache('django.core.cache.backends.db.DatabaseCache', LOCATION=self._table_name, OPTIONS={'MAX_ENTRIES': 30, 'CULL_FREQUENCY': 0})
+        self.cache = get_cache(self.backend_name, LOCATION=self._table_name, OPTIONS={'MAX_ENTRIES': 30, 'CULL_FREQUENCY': 0})
         self.perform_cull_test(50, 18)
 
     def test_old_initialization(self):
@@ -754,12 +758,14 @@ class DBCacheTests(unittest.TestCase, BaseCacheTests):
         self.perform_cull_test(50, 18)
 
 class LocMemCacheTests(unittest.TestCase, BaseCacheTests):
+    backend_name = 'django.core.cache.backends.locmem.LocMemCache'
+
     def setUp(self):
-        self.cache = get_cache('django.core.cache.backends.locmem.LocMemCache', OPTIONS={'MAX_ENTRIES': 30})
-        self.prefix_cache = get_cache('django.core.cache.backends.locmem.LocMemCache', KEY_PREFIX='cacheprefix')
-        self.v2_cache = get_cache('django.core.cache.backends.locmem.LocMemCache', VERSION=2)
-        self.custom_key_cache = get_cache('django.core.cache.backends.locmem.LocMemCache', OPTIONS={'MAX_ENTRIES': 30}, KEY_FUNCTION=custom_key_func)
-        self.custom_key_cache2 = get_cache('django.core.cache.backends.locmem.LocMemCache', OPTIONS={'MAX_ENTRIES': 30}, KEY_FUNCTION='regressiontests.cache.tests.custom_key_func')
+        self.cache = get_cache(self.backend_name, OPTIONS={'MAX_ENTRIES': 30})
+        self.prefix_cache = get_cache(self.backend_name, KEY_PREFIX='cacheprefix')
+        self.v2_cache = get_cache(self.backend_name, VERSION=2)
+        self.custom_key_cache = get_cache(self.backend_name, OPTIONS={'MAX_ENTRIES': 30}, KEY_FUNCTION=custom_key_func)
+        self.custom_key_cache2 = get_cache(self.backend_name, OPTIONS={'MAX_ENTRIES': 30}, KEY_FUNCTION='regressiontests.cache.tests.custom_key_func')
 
         # LocMem requires a hack to make the other caches
         # share a data store with the 'normal' cache.
@@ -782,7 +788,7 @@ class LocMemCacheTests(unittest.TestCase, BaseCacheTests):
         self.perform_cull_test(50, 29)
 
     def test_zero_cull(self):
-        self.cache = get_cache('django.core.cache.backends.locmem.LocMemCache', OPTIONS={'MAX_ENTRIES': 30, 'CULL_FREQUENCY': 0})
+        self.cache = get_cache(self.backend_name, OPTIONS={'MAX_ENTRIES': 30, 'CULL_FREQUENCY': 0})
         self.perform_cull_test(50, 19)
 
     def test_old_initialization(self):
@@ -791,8 +797,8 @@ class LocMemCacheTests(unittest.TestCase, BaseCacheTests):
 
     def test_multiple_caches(self):
         "Check that multiple locmem caches are isolated"
-        mirror_cache = get_cache('django.core.cache.backends.locmem.LocMemCache')
-        other_cache = get_cache('django.core.cache.backends.locmem.LocMemCache', LOCATION='other')
+        mirror_cache = get_cache(self.backend_name)
+        other_cache = get_cache(self.backend_name, LOCATION='other')
 
         self.cache.set('value1', 42)
         self.assertEqual(mirror_cache.get('value1'), 42)
@@ -803,13 +809,15 @@ class LocMemCacheTests(unittest.TestCase, BaseCacheTests):
 # need to contain a cache backend setting that points at
 # your memcache server.
 class MemcachedCacheTests(unittest.TestCase, BaseCacheTests):
+    backend_name = 'django.core.cache.backends.memcached.MemcachedCache'
+
     def setUp(self):
         name = settings.CACHES[DEFAULT_CACHE_ALIAS]['LOCATION']
-        self.cache = get_cache('django.core.cache.backends.memcached.MemcachedCache', LOCATION=name)
-        self.prefix_cache = get_cache('django.core.cache.backends.memcached.MemcachedCache', LOCATION=name, KEY_PREFIX='cacheprefix')
-        self.v2_cache = get_cache('django.core.cache.backends.memcached.MemcachedCache', LOCATION=name, VERSION=2)
-        self.custom_key_cache = get_cache('django.core.cache.backends.memcached.MemcachedCache', LOCATION=name, KEY_FUNCTION=custom_key_func)
-        self.custom_key_cache2 = get_cache('django.core.cache.backends.memcached.MemcachedCache', LOCATION=name, KEY_FUNCTION='regressiontests.cache.tests.custom_key_func')
+        self.cache = get_cache(self.backend_name, LOCATION=name)
+        self.prefix_cache = get_cache(self.backend_name, LOCATION=name, KEY_PREFIX='cacheprefix')
+        self.v2_cache = get_cache(self.backend_name, LOCATION=name, VERSION=2)
+        self.custom_key_cache = get_cache(self.backend_name, LOCATION=name, KEY_FUNCTION=custom_key_func)
+        self.custom_key_cache2 = get_cache(self.backend_name, LOCATION=name, KEY_FUNCTION='regressiontests.cache.tests.custom_key_func')
 
     def tearDown(self):
         self.cache.clear()
@@ -835,13 +843,15 @@ class FileBasedCacheTests(unittest.TestCase, BaseCacheTests):
     """
     Specific test cases for the file-based cache.
     """
+    backend_name = 'django.core.cache.backends.filebased.FileBasedCache'
+
     def setUp(self):
         self.dirname = tempfile.mkdtemp()
-        self.cache = get_cache('django.core.cache.backends.filebased.FileBasedCache', LOCATION=self.dirname, OPTIONS={'MAX_ENTRIES': 30})
-        self.prefix_cache = get_cache('django.core.cache.backends.filebased.FileBasedCache', LOCATION=self.dirname, KEY_PREFIX='cacheprefix')
-        self.v2_cache = get_cache('django.core.cache.backends.filebased.FileBasedCache', LOCATION=self.dirname, VERSION=2)
-        self.custom_key_cache = get_cache('django.core.cache.backends.filebased.FileBasedCache', LOCATION=self.dirname, KEY_FUNCTION=custom_key_func)
-        self.custom_key_cache2 = get_cache('django.core.cache.backends.filebased.FileBasedCache', LOCATION=self.dirname, KEY_FUNCTION='regressiontests.cache.tests.custom_key_func')
+        self.cache = get_cache(self.backend_name, LOCATION=self.dirname, OPTIONS={'MAX_ENTRIES': 30})
+        self.prefix_cache = get_cache(self.backend_name, LOCATION=self.dirname, KEY_PREFIX='cacheprefix')
+        self.v2_cache = get_cache(self.backend_name, LOCATION=self.dirname, VERSION=2)
+        self.custom_key_cache = get_cache(self.backend_name, LOCATION=self.dirname, KEY_FUNCTION=custom_key_func)
+        self.custom_key_cache2 = get_cache(self.backend_name, LOCATION=self.dirname, KEY_FUNCTION='regressiontests.cache.tests.custom_key_func')
 
     def tearDown(self):
         self.cache.clear()