def test_pickle_dict(self): items = { 'name': u'jon', 'animal': 'dog', 'boolean': True, 'number': 42, 'list': ['a', 'b'], 'dict': { 'foo': 'bar' }, } pickled = pickle_dict(items) expected = ( ('name', u'jon'), ('animal', 'dog'), ('boolean', 'I01\n.'), ('number', 'I42\n.'), ( 'list', "(lp1\nS'a'\naS'b'\na.", ), ('dict', "(dp1\nS'foo'\np2\nS'bar'\np3\ns."), ) self.assertEqual(len(pickled.items()), 7) for key, val in expected: self.assertEqual(pickled.get(key), val) fields = pickled.get('_pickled').split(',') self.assertEqual(sorted(fields), ['boolean', 'dict', 'list', 'number']) self.assertEqual(unpickle_dict(pickled), items) self.assertEqual(unpickle_dict(pickle_dict(items)), items)
def test_pickle_dict(self): items = { 'name': u'jon', 'animal': 'dog', 'boolean': True, 'number': 42, 'list': ['a', 'b'], 'dict': {'foo': 'bar'}, } pickled = pickle_dict(items) expected = ( ('name', u'jon'), ('animal', 'dog'), ('boolean', 'I01\n.'), ('number', 'I42\n.'), ('list', "(lp0\nS'a'\np1\naS'b'\np2\na."), ('dict', "(dp0\nS'foo'\np1\nS'bar'\np2\ns."), ) self.assertEqual(len(pickled.items()), 7) for key, val in expected: self.assertEqual(pickled.get(key), val) fields = pickled.get('_pickled').split(',') self.assertEqual(sorted(fields), ['boolean', 'dict', 'list', 'number']) self.assertEqual(unpickle_dict(pickled), items) self.assertEqual(unpickle_dict(pickle_dict(items)), items)
def _make_qs(self, items): '''Returns a query string for the given dictionary of items. All keys and values in the provided items will be urlencoded. If necessary, any python objects will be pickled before being urlencoded. ''' return urlencode(pickle_dict(items))