From 9c275dd86aa8c204ecb24f3e417699520c4d821d Mon Sep 17 00:00:00 2001 From: Gregory Roussac Date: Thu, 25 Aug 2016 17:23:12 +0200 Subject: [PATCH 1/3] VCR AttributeError: 'NoneType' object has no attribute 'encode' Hi, Using an old fork but may be usefull. I think checking the string is required like on line 47. Best regards --- vcr/serializers/compat.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vcr/serializers/compat.py b/vcr/serializers/compat.py index 0fcc583..8364997 100644 --- a/vcr/serializers/compat.py +++ b/vcr/serializers/compat.py @@ -24,7 +24,7 @@ def convert_body_to_bytes(resp): http://pyyaml.org/wiki/PyYAMLDocumentation#Python3support """ try: - if not isinstance(resp['body']['string'], six.binary_type): + if resp['body']['string'] is not None and not isinstance(resp['body']['string'], six.binary_type): resp['body']['string'] = resp['body']['string'].encode('utf-8') except (KeyError, TypeError, UnicodeEncodeError): # The thing we were converting either wasn't a dictionary or didn't From a8f1a65d621159e324ce56a99ce64b422df4140c Mon Sep 17 00:00:00 2001 From: Gregory Roussac Date: Tue, 30 Aug 2016 15:06:03 +0200 Subject: [PATCH 2/3] test serializers.compat.convert_to_bytes() --- tests/unit/test_serialize.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/tests/unit/test_serialize.py b/tests/unit/test_serialize.py index cf3f0a8..60bf6da 100644 --- a/tests/unit/test_serialize.py +++ b/tests/unit/test_serialize.py @@ -4,7 +4,7 @@ import pytest from vcr.compat import mock from vcr.request import Request from vcr.serialize import deserialize, serialize -from vcr.serializers import yamlserializer, jsonserializer +from vcr.serializers import yamlserializer, jsonserializer, compat def test_deserialize_old_yaml_cassette(): @@ -131,3 +131,8 @@ def test_serialize_binary_request(): ) except (UnicodeDecodeError, TypeError) as exc: assert msg in str(exc) + +def test_deserialize_no_body_string(): + data = {'body': {'string': None}} + output = compat.convert_to_bytes(data) + assert data == output From 8274b660c68686ce5a912b0ccaedf1a07ed31ef4 Mon Sep 17 00:00:00 2001 From: Kevin McCarthy Date: Sun, 2 Oct 2016 12:08:02 -1000 Subject: [PATCH 3/3] fix flake8 failure --- tests/unit/test_serialize.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/unit/test_serialize.py b/tests/unit/test_serialize.py index 60bf6da..6555cca 100644 --- a/tests/unit/test_serialize.py +++ b/tests/unit/test_serialize.py @@ -132,6 +132,7 @@ def test_serialize_binary_request(): except (UnicodeDecodeError, TypeError) as exc: assert msg in str(exc) + def test_deserialize_no_body_string(): data = {'body': {'string': None}} output = compat.convert_to_bytes(data)