我正在为缓存机制编写测试。该机制有两个缓存层,即请求缓存和redis。请求缓存使用Flask.g
,该对象存储请求持续时间的值。它通过在Flask.g._cache
属性上创建字典来实现此目的。
但是,我认为确切的属性是我的单元测试不应该关心的实现细节。我想确保它将其值存储在Flask.g上,但我并不关心它是如何做到的。什么是测试这个的好方法?
我正在使用Python模拟模块,所以我知道我可以嘲笑`Flask.g,但我不确定是否有方法来测试是否有任何属性访问权限在它上面,没有关心它属于哪个属性。
对于像这样的测试,这甚至是正确的方法吗?
答案 0 :(得分:0)
如果您正在测试端点,就个人而言,您不应该嘲笑Flask.g。因为你会创建一个self.app(我可能不确定这个部分)
其次,您需要使用类似于返回结构的东西来模拟redis客户端。
class RedisTestCase(object):
saved_dictionary = {}
def keys(self, pattern):
found_keys = []
for key in RedisTestCase.saved_dictionary: #loop keys for pattern
if pattern:
found_keys.append(key)
return found_keys
def delete(self, keys):
for key in keys:
if key in RedisTestCase.saved_dictionary:
del RedisTestCase.saved_dictionary[key]
def mset(self, items):
RedisTestCase.saved_dictionary.update(items)
def pipeline(self):
return RedisTestCase()