mirror of
https://github.com/kevin1024/vcrpy.git
synced 2025-12-11 01:53:01 +00:00
register custom persister fix
This commit is contained in:
@@ -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()
|
||||||
|
|||||||
@@ -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)
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|||||||
Reference in New Issue
Block a user