在我的设置.py,我已将缓存指定为:
CACHES = {
'default': {
......
}
}
在我的视图.py,我有
^{pr2}$现在在我的测试.py,我可以嘲笑请求.get('aurl'),以确保不发出外部请求。在
但是测试代码仍然会命中缓存并从中获取/设置。所以如果我的prod已经设置了缓存,那么test失败了,因为它从同一个缓存中获取数据。或者,如果我先运行测试,那么测试用例使用测试数据设置缓存,我在运行prod website时看到了同样的情况。在
我怎么能嘲笑
get_cache('default').set('key', result)
以及
get_cache('default').get('key')
因此set调用不设置实际缓存(return None?)而get不返回实际缓存中的任何内容。在
请给我提供一个代码样本,如何做到这一点。在
以下是我如何嘲笑我的请求.get在
def test_get_aview(self):
with mock.patch('requests.get') as mymock:
mymock.side_effect = (lambda url: MOCKED_DATA[url])
我可以在这后面加什么代码使它工作?我试过
class MockCacheValue(mock.MagicMock):
def get(self, key):
print 'here'
return None
def set(self, key, value):
print 'here 2'
pass
def test_get_aview(self):
with mock.patch('requests.get') as mymock:
mymock.side_effect = (lambda url: MOCKED_DATA[url])
mock.patch('django.core.cache.get_cache', new=MockCacheValue)
但它不起作用,在上面的get/set中放入print语句并不能打印出任何东西,这让我觉得它没有被恰当地嘲笑
我认为您应该在运行测试时使用dummy cache,方法是:
正在检查测试时要使用的缓存后端设置.py公司名称:
希望有帮助。在
相关问题 更多 >
编程相关推荐