Merge pull request #805 from Lukasa/develop

Remove None values from post data.
This commit is contained in:
Kenneth Reitz
2012-08-25 07:35:06 -07:00
2 changed files with 14 additions and 3 deletions
+4 -3
View File
@@ -330,9 +330,10 @@ class Request(object):
result = []
for k, vs in to_key_val_list(data):
for v in isinstance(vs, list) and vs or [vs]:
result.append(
(k.encode('utf-8') if isinstance(k, str) else k,
v.encode('utf-8') if isinstance(v, str) else v))
if v is not None:
result.append(
(k.encode('utf-8') if isinstance(k, str) else k,
v.encode('utf-8') if isinstance(v, str) else v))
return urlencode(result, doseq=True)
else:
return data
+10
View File
@@ -1112,5 +1112,15 @@ class RequestsTestSuite(TestSetup, TestBaseMixin, unittest.TestCase):
Requests.exceptions.InvalidURL instead of UnicodeError."""
self.assertRaises(InvalidURL, get, 'http://.google.com/')
def test_none_vals_in_data_are_deleted(self):
"""Test that keys with None as the value are removed instead of
being posted."""
data = {'key1': 'value1', 'key2': None}
r = post(httpbin('post'), data=data)
vals = r.json['form']
self.assertEqual(vals['key1'], 'value1')
# The 'key2' key should not have been sent.
self.assertTrue(vals.get('key2') is None)
if __name__ == '__main__':
unittest.main()