Exemple #1
0
 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
Exemple #2
0
    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
Exemple #3
0
    def test_incr_decr(self):
        logging.info(u'测试 自增、自减 函数')
        key1 = 'key1'
        cache.set(key1, 0)  # 必须先设置,才可以使用 incr, decr
        assert cache.incr(key1) == 1
        assert cache.incr(key1) == 2
        assert cache.incr(key1, 10) == 12
        assert cache.incr(key1) == 13
        assert cache.decr(key1) == 12

        key2 = 'key2'
        cache.set(key2, 0)
        assert cache.decr(key2) == -1
        assert cache.decr(key2) == -2
        assert cache.decr(key2, 10) == -12
        assert cache.decr(key2) == -13
        assert cache.incr(key2) == -12
Exemple #4
0
 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) == []
Exemple #5
0
    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
Exemple #6
0
 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
Exemple #7
0
 def test_pop(self):
     """pop函数测试"""
     logging.info(u'测试 pop 函数')
     key = '123*456'
     value = """ '"'"xxx.!1!1@#$%^&*()_+=-\|][{}?><,.;:'"+-*/.25eww """  # 特殊字符串
     cache.set(key, value)
     assert pop(key) == value
     assert cache.exists(key) == False
     cache.set('a1', value)
     cache.set('a2', value)
     assert pop('a2', 'a1') == [value, value]
     # 特殊参数检查
     assert pop(None) == None
     assert pop(None, None) == []
Exemple #8
0
    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', long(1555))
        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') == []