1
0
mirror of https://github.com/kevin1024/vcrpy.git synced 2025-12-09 01:03:24 +00:00

Replaced yaml dump of Request object with plain dict dump

This commit is contained in:
Max Shytikov
2014-04-24 02:05:14 +02:00
parent 0408bdaadb
commit 1e995c3c9b
5 changed files with 14 additions and 36 deletions

View File

@@ -1,9 +1,7 @@
- request: !!python/object:vcr.request.Request - request:
body: null body: null
headers: !!python/object/apply:__builtin__.frozenset headers: {Accept: '*/*', Accept-Encoding: 'gzip, deflate, compress', User-Agent: python-requests/2.2.1
- - !!python/tuple [Accept-Encoding, 'gzip, deflate, compress'] CPython/2.6.1 Darwin/10.8.0}
- !!python/tuple [User-Agent, python-requests/2.2.1 CPython/2.6.1 Darwin/10.8.0]
- !!python/tuple [Accept, '*/*']
method: GET method: GET
uri: http://httpbin.org:80/ip uri: http://httpbin.org:80/ip
response: response:

View File

@@ -1,9 +1,6 @@
- request: !!python/object:vcr.request.Request - request:
body: null body: null
headers: !!python/object/apply:__builtin__.frozenset headers: {Accept: '*/*', Accept-Encoding: 'gzip, deflate, compress', User-Agent: vcrpy-test}
- - !!python/tuple [Accept-Encoding, 'gzip, deflate, compress']
- !!python/tuple [User-Agent, vcrpy-test]
- !!python/tuple [Accept, '*/*']
method: GET method: GET
uri: http://seomoz.org:80/ uri: http://seomoz.org:80/
response: response:
@@ -11,12 +8,9 @@
headers: ["Location: http://moz.com/\r\n", "Server: BigIP\r\n", "Connection: Keep-Alive\r\n", headers: ["Location: http://moz.com/\r\n", "Server: BigIP\r\n", "Connection: Keep-Alive\r\n",
"Content-Length: 0\r\n"] "Content-Length: 0\r\n"]
status: {code: 301, message: Moved Permanently} status: {code: 301, message: Moved Permanently}
- request: !!python/object:vcr.request.Request - request:
body: null body: null
headers: !!python/object/apply:__builtin__.frozenset headers: {Accept: '*/*', Accept-Encoding: 'gzip, deflate, compress', User-Agent: vcrpy-test}
- - !!python/tuple [Accept-Encoding, 'gzip, deflate, compress']
- !!python/tuple [User-Agent, vcrpy-test]
- !!python/tuple [Accept, '*/*']
method: GET method: GET
uri: http://moz.com:80/ uri: http://moz.com:80/
response: response:

View File

@@ -8,7 +8,8 @@ from vcr.errors import UnhandledHTTPRequestError
def test_cassette_load(tmpdir): def test_cassette_load(tmpdir):
a_file = tmpdir.join('test_cassette.yml') a_file = tmpdir.join('test_cassette.yml')
a_file.write(yaml.dump([ a_file.write(yaml.dump([
{'request': 'foo', 'response': 'bar'} {'request': {'body': '', 'uri': 'foo', 'method': 'GET', 'headers': {}},
'response': 'bar'}
])) ]))
a_cassette = Cassette.load(str(a_file)) a_cassette = Cassette.load(str(a_file))
assert len(a_cassette) == 1 assert len(a_cassette) == 1

View File

@@ -71,7 +71,7 @@ class Request(object):
'method': self.method, 'method': self.method,
'uri': self.uri, 'uri': self.uri,
'body': self.body, 'body': self.body,
'headers': self.headers, 'headers': dict(self.headers),
} }
@classmethod @classmethod

View File

@@ -1,5 +1,6 @@
import sys
import yaml import yaml
from vcr.request import Request
from . import compat from . import compat
# Use the libYAML versions if possible # Use the libYAML versions if possible
@@ -21,25 +22,9 @@ Deserializing: string (yaml converts from utf-8) -> bytestring
""" """
def _restore_frozenset():
"""
Restore __builtin__.frozenset for cassettes serialized in python2 but
deserialized in python3 and builtins.frozenset for cassettes serialized
in python3 and deserialized in python2
"""
if '__builtin__' not in sys.modules:
import builtins
sys.modules['__builtin__'] = builtins
if 'builtins' not in sys.modules:
sys.modules['builtins'] = sys.modules['__builtin__']
def deserialize(cassette_string): def deserialize(cassette_string):
_restore_frozenset()
data = yaml.load(cassette_string, Loader=Loader) data = yaml.load(cassette_string, Loader=Loader)
requests = [r['request'] for r in data] requests = [Request._from_dict(r['request']) for r in data]
responses = [r['response'] for r in data] responses = [r['response'] for r in data]
responses = [compat.convert_to_bytes(r['response']) for r in data] responses = [compat.convert_to_bytes(r['response']) for r in data]
return requests, responses return requests, responses
@@ -47,7 +32,7 @@ def deserialize(cassette_string):
def serialize(cassette_dict): def serialize(cassette_dict):
data = ([{ data = ([{
'request': request, 'request': request._to_dict(),
'response': response, 'response': response,
} for request, response in zip( } for request, response in zip(
cassette_dict['requests'], cassette_dict['requests'],