def test_get(self, dt_mock, M): dt_mock.datetime.utcnow.side_effect = [ dt.datetime(2015, 02, 05, 11, 32), dt.datetime(2015, 02, 05, 11, 34), ] ret = M.Neighborhood.query.get.return_value cache = NeighborhoodCache(30) cache._expired = Mock(return_value=False) n = cache.get('/p/') M.Neighborhood.query.get.assert_called_once_with(url_prefix='/p/') assert_equal(n, ret) # don't hit mongo second time n = cache.get('/p/') assert_equal(M.Neighborhood.query.get.call_count, 1) assert_equal(n, ret) # and hits if cache is expired cache._expired.return_value = True n = cache.get('/p/') assert_equal(M.Neighborhood.query.get.call_count, 2) assert_equal(n, ret)