def test_set_json(self): logging.info(u'测试 get put 函数存储非字符串情况') key = u'""""哈哈' value = { u"aa": u"哈哈", "bb": "嘿嘿", 0: [1, 2, 3], 2: { 'cc': [2.01, 547L] }, '嘿嘿': set(u'哆来咪') } # 嵌套json cache.set(key, value) assert cache.get(key) == value assert cache.pop(key) == value assert cache.pop(key) is None value = datetime.datetime.now() # datetime 类型的存储 cache.set(key, value) assert cache.get(key) == value assert cache.pop(key) == value assert cache.pop(key) is None value = time.localtime() # time 类型的存储 cache.set(key, value) assert time.mktime(cache.get(key)) == time.mktime( value) # 避免夏令时引起的判断不同 assert time.mktime(cache.pop(key)) == time.mktime( value) # 避免夏令时引起的判断不同 assert cache.pop(key) is None
def test_chinese(self): u'''中文检查''' logging.info(u'测试 中文缓存') key = u'123*45测试key。6' value = u""" '"'"哈哈嘿嘿|“‘’” """ # unicode 中文 cache.set(key, value) assert cache.get(key) == value value = """ '"'"哈哈嘿嘿|“‘’” """ # str 中文 cache.set(key, value) assert cache.get(key) == value
def test_model(self): """django.db.models.Model 测试""" logging.info(u'Model 测试') p = Person(name="a", age=111) cache.set('my_key', p) p2 = cache.get('my_key') assert id(p) != id(p2) # 不同的内存地址(经过了redis) assert p == p2 # 交给 model 里面的 __eq__ 函数比较 # 嵌套测试 value2 = {u'测试值': [p, p2]} cache.set('my_key2', value2) res = cache.get('my_key2') assert id(value2) != id(res) # 不同的内存地址 assert value2.keys() == res.keys() assert value2 == res
def test_base(self): """基础函数测试""" logging.info(u'测试 get put 等基本函数') key = '123*456' value = """ '"'"xxx.!1!1@#$%^&*()_+=-\|][{}?><,.;:'"+-*/.25eww """ # 特殊字符串 assert cache.get(key) == None cache.set(key, value) assert cache.get(key) == value assert cache.exists(key) == True assert cache.pop(key) == value assert cache.exists(key) == False assert cache.get(key) == None assert cache.get(key, 0) == 0 # 默认值检查 # 特殊参数检查 assert cache.get(None) == None assert cache.exists(None) == False assert cache.pop(None) == None assert cache.pop(None, None) == [] if getattr(cache, 'keys', None): assert cache.keys(None) == []
def test_timeout(self): logging.info(u'测试 过期时间') key1 = 'key1' key2 = 'key2' value = 'value1' # 设置过期时间 1 秒,过期前取值正常返回 cache.set(key1, value, timeout=1) # set 函数的过期测试 assert cache.get(key1) == value assert cache.exists(key1) == True # expire 函数的过期测试(内存缓存时,没有这个函数) cache.set(key2, value) cache.expire(key2, 1) assert cache.get(key2) == value assert cache.exists(key2) == True # 让它们过期 time.sleep(1.01) assert cache.exists(key1) == False assert cache.exists(key2) == False
def test_keys(self): if not getattr(cache, 'keys', None): logging.info(u'缓存里面没有 keys 函数,无法测试') return logging.info(u'测试 keys 函数及返回长度检查') cache.set('a1', 1) cache.set('b1', 1555L) cache.set('c1', 1) cache.set('d1', 2, -1) # 已过期 assert cache.get('d1') == None cache.set('a2', 1) cache.set('b2', 1.0245) cache.set('c2', 1) assert set(cache.keys('a*')) == set(['a1', 'a2']) assert set(cache.keys('*1')) == set(['a1', 'b1', 'c1']) assert len(cache.keys('*')) == 6 assert cache.pop('a1', 'a2') == [1,1] # 取多个值,并删除 assert cache.pop('a1') == None assert set(cache.pop('a1', 'b1', 'b2')) == set([1555L, 1.0245]) # 取多个值,并删除 assert cache.pop('a1', 'b1', 'b2') == []