1
0
mirror of https://github.com/kevin1024/vcrpy.git synced 2025-12-09 01:03:24 +00:00
Files
vcrpy/vcr/unittest/testcase.py
Sebastian Pipping c13f33b1e0 Add unmodified vcrpy-unittest code
Source commit is a2fd7625fde1ea15c8982759b07007aef40424b3.
License is MIT just like vcrpy.
2023-06-08 16:28:34 +02:00

45 lines
1.2 KiB
Python

from __future__ import absolute_import, unicode_literals
import inspect
import logging
import os
import unittest
import vcr
logger = logging.getLogger(__name__)
class VCRMixin(object):
"""A TestCase mixin that provides VCR integration."""
vcr_enabled = True
def setUp(self):
super(VCRMixin, self).setUp()
if self.vcr_enabled:
kwargs = self._get_vcr_kwargs()
myvcr = self._get_vcr(**kwargs)
cm = myvcr.use_cassette(self._get_cassette_name())
self.cassette = cm.__enter__()
self.addCleanup(cm.__exit__, None, None, None)
def _get_vcr(self, **kwargs):
if 'cassette_library_dir' not in kwargs:
kwargs['cassette_library_dir'] = self._get_cassette_library_dir()
return vcr.VCR(**kwargs)
def _get_vcr_kwargs(self, **kwargs):
return kwargs
def _get_cassette_library_dir(self):
testdir = os.path.dirname(inspect.getfile(self.__class__))
return os.path.join(testdir, 'cassettes')
def _get_cassette_name(self):
return '{0}.{1}.yaml'.format(self.__class__.__name__,
self._testMethodName)
class VCRTestCase(VCRMixin, unittest.TestCase):
pass