禁用缓存装饰器以测试dogpile.cache

时间:2013-11-05 18:37:39

标签: python caching pylons beaker dogpile.cache

我最近从烧杯切换到了dogpile.cache。它在实时代码中运行良好,但我遇到了测试问题。如何禁用缓存进行测试?

我目前正在使用

#caching.py
from dogpile.cache import make_region

region = make_region().configure(
    'dogpile.cache.redis',
    expiration_time = 3600,
    arguments = {
        'host': '127.0.0.1',
        'port': 6379
    }
)

#db.py
from .caching import region

@region.cache_on_arguments()
def fetch_from_db(item):
    return some_database.lookup(item)

如何换出缓存或禁用单元测试?

2 个答案:

答案 0 :(得分:5)

在测试期间,将dogpile配置为使用NullBackend,这是Null Object design pattern的一个示例。

from dogpile.cache import make_region

region = make_region().configure(
    'dogpile.cache.null'
)

答案 1 :(得分:0)

将装饰者重新定义为身份识别功能。

if __debug__:
    def dont_cache():
        def noop(f):
            return f
        return noop
    class Nothing:
        pass
    region = Nothing()
    region.cache_on_arguments = dont_cache
else:
    from .caching import region