def _check_base(self, method, param_to_change=None): self.cache.reset_mock() items = [u'тест', 'str', 100, 1.45] random.shuffle(items) a, b, c = items[:3] result = process_args(a, b, c) self.assertEqual(method(a, b, c), result) self.cache.assert_called_once_with(result) self.cache.reset_mock() # cached version (force convert to unicode) self.assertEqual(force_text(method(a, b, c)), force_text(result)) self.assertFalse(self.cache.called) self.cache.reset_mock() if param_to_change == 'c': c = items[3] elif param_to_change == 'b': b = items[3] else: a = items[3] result = process_args(a, b, c) # different params, no cache self.assertEqual(method(a, b, c), result) self.cache.assert_called_once_with(result) self.cache.reset_mock()
def search_prefix(self, prefix): keys_list = self.get_all_keys() actual_prefix = prefix if self.is_locmem: # using real keys only for locmem cache actual_prefix = self.with_key_prefix(force_text(prefix)) for key in keys_list: # force all keys to be unicode, since not all cache backends support it key = force_text(key) if key.startswith(force_text(actual_prefix)): return True return False
def process_args(*args, **kwargs): final = list(args) for k, v in sorted(kwargs.items()): final.append(k) final.append(v) return ':'.join(force_text(i) for i in final)