我今天想写一个Django unittest,以确保从缓存中提供缓存视图而不进行计算,但是我试图弄明白这一点。
是否可以编写一个单元测试来回答视图是否从缓存中拉出而不重新计算某些值并提供结果?
我试过的一件事(这个工作)是显式删除缓存项,然后请求视图并在请求视图后确认缓存键是否存在:
## from testing module
from django.test import TestCase
from selenium import webdriver
from django.core.cache import cache
class SomeUnitTest(TestCase):
def setUp(self):
self.browser = webdriver.Firefox()
self.browser.implicitly_wait(5)
def test_playlist_cache(self):
cache_key = some_key_generator()
self.browser.get('http://localhost:8000/video/watch/url')
self.assertTrue(cache.get(cache_key))
cache.delete(cache_key)
self.assertFalse(cache.get(cache_key))
# The following request should take awhile to process AND
# It should add the element back into the cache
self.browser.get('http://localhost:8000/video/watch/url')
self.assertTrue(cache.get(cache_key), "Video URL is NOT in the cache!")
def tearDown(self):
self.browser.quit()
这是测试我们请求视图后实际生成缓存项,这可能足够好了吗?
我想进一步实际测试结果内容是否来自缓存的原因是我使用低级缓存API来控制在适当的时间内缓存适当元素的各个方面。我可能犯了一个错误并且它覆盖了缓存的项目或者实际上没有从缓存中提取,所以我希望我的unittest可以证明该视图正在做我认为它正在做的事情。 (我想我可以比较生成响应所需的时间,但这似乎非常模糊和痛苦,而且不是正确的做事方式。)
任何建议表示赞赏。