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

register custom persister fix

This commit is contained in:
Petr Bulusek
2017-08-09 14:25:10 +02:00
parent 0a3aaddca2
commit 9092b34dd1
3 changed files with 24 additions and 6 deletions

View File

@@ -10,10 +10,27 @@ import vcr
from vcr.persisters.filesystem import FilesystemPersister from vcr.persisters.filesystem import FilesystemPersister
class CustomFilesystemPersister(object):
"""
like default FilesystemPersister but
adds .test extension to cassette file
"""
@staticmethod
def load_cassette(cassette_path, serializer):
cassette_path += '.test'
return FilesystemPersister.load_cassette(cassette_path, serializer)
@staticmethod
def save_cassette(cassette_path, cassette_dict, serializer):
cassette_path += '.test'
FilesystemPersister.save_cassette(cassette_path, cassette_dict,
serializer)
def test_save_cassette_with_custom_persister(tmpdir, httpbin): def test_save_cassette_with_custom_persister(tmpdir, httpbin):
'''Ensure you can save a cassette using custom persister''' '''Ensure you can save a cassette using custom persister'''
my_vcr = vcr.VCR() my_vcr = vcr.VCR()
my_vcr.register_persister(FilesystemPersister) my_vcr.register_persister(CustomFilesystemPersister)
# Check to make sure directory doesnt exist # Check to make sure directory doesnt exist
assert not os.path.exists(str(tmpdir.join('nonexistent'))) assert not os.path.exists(str(tmpdir.join('nonexistent')))
@@ -23,7 +40,7 @@ def test_save_cassette_with_custom_persister(tmpdir, httpbin):
urlopen(httpbin.url).read() urlopen(httpbin.url).read()
# Callback should have made the file and the directory # Callback should have made the file and the directory
assert os.path.exists(str(tmpdir.join('nonexistent', 'cassette.yml'))) assert os.path.exists(str(tmpdir.join('nonexistent', 'cassette.yml.test')))
def test_load_cassette_with_custom_persister(tmpdir, httpbin): def test_load_cassette_with_custom_persister(tmpdir, httpbin):
@@ -31,9 +48,9 @@ def test_load_cassette_with_custom_persister(tmpdir, httpbin):
Ensure you can load a cassette using custom persister Ensure you can load a cassette using custom persister
''' '''
my_vcr = vcr.VCR() my_vcr = vcr.VCR()
my_vcr.register_persister(FilesystemPersister) my_vcr.register_persister(CustomFilesystemPersister)
test_fixture = str(tmpdir.join('synopsis.json')) test_fixture = str(tmpdir.join('synopsis.json.test'))
with my_vcr.use_cassette(test_fixture, serializer='json'): with my_vcr.use_cassette(test_fixture, serializer='json'):
response = urlopen(httpbin.url).read() response = urlopen(httpbin.url).read()

View File

@@ -145,6 +145,7 @@ class VCR(object):
merged_config = { merged_config = {
'serializer': self._get_serializer(serializer_name), 'serializer': self._get_serializer(serializer_name),
'persister': self.persister,
'match_on': self._get_matchers( 'match_on': self._get_matchers(
tuple(matcher_names) + tuple(additional_matchers) tuple(matcher_names) + tuple(additional_matchers)
), ),

View File

@@ -6,8 +6,8 @@ from ..serialize import serialize, deserialize
class FilesystemPersister(object): class FilesystemPersister(object):
@classmethod @staticmethod
def load_cassette(cls, cassette_path, serializer): def load_cassette(cassette_path, serializer):
try: try:
with open(cassette_path) as f: with open(cassette_path) as f:
cassette_content = f.read() cassette_content = f.read()