1
0
mirror of https://github.com/kevin1024/vcrpy.git synced 2025-12-08 16:53:23 +00:00

vcr/unittest: Apply black formatting

This commit is contained in:
Sebastian Pipping
2023-06-02 17:10:23 +02:00
parent 9232915885
commit ad650a7ee1
2 changed files with 55 additions and 42 deletions

View File

@@ -2,14 +2,15 @@ import inspect
import logging
import os
import unittest
from .. import VCR
from .. import VCR
logger = logging.getLogger(__name__)
class VCRMixin(object):
"""A TestCase mixin that provides VCR integration."""
vcr_enabled = True
def setUp(self):
@@ -22,8 +23,8 @@ class VCRMixin(object):
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()
if "cassette_library_dir" not in kwargs:
kwargs["cassette_library_dir"] = self._get_cassette_library_dir()
return VCR(**kwargs)
def _get_vcr_kwargs(self, **kwargs):
@@ -31,11 +32,10 @@ class VCRMixin(object):
def _get_cassette_library_dir(self):
testdir = os.path.dirname(inspect.getfile(self.__class__))
return os.path.join(testdir, 'cassettes')
return os.path.join(testdir, "cassettes")
def _get_cassette_name(self):
return '{0}.{1}.yaml'.format(self.__class__.__name__,
self._testMethodName)
return "{0}.{1}.yaml".format(self.__class__.__name__, self._testMethodName)
class VCRTestCase(VCRMixin, unittest.TestCase):

View File

@@ -1,107 +1,111 @@
import os
from unittest import TextTestRunner, defaultTestLoader
from unittest.mock import MagicMock
from unittest import defaultTestLoader, TextTestRunner
from urllib.request import urlopen
from ..testcase import VCRTestCase
def test_defaults():
class MyTest(VCRTestCase):
def test_foo(self):
pass
test = run_testcase(MyTest)[0][0]
expected_path = os.path.join(os.path.dirname(__file__), 'cassettes')
expected_name = 'MyTest.test_foo.yaml'
expected_path = os.path.join(os.path.dirname(__file__), "cassettes")
expected_name = "MyTest.test_foo.yaml"
assert os.path.dirname(test.cassette._path) == expected_path
assert os.path.basename(test.cassette._path) == expected_name
def test_disabled():
# Baseline vcr_enabled = True
class MyTest(VCRTestCase):
def test_foo(self):
pass
test = run_testcase(MyTest)[0][0]
assert hasattr(test, 'cassette')
assert hasattr(test, "cassette")
# Test vcr_enabled = False
class MyTest(VCRTestCase):
vcr_enabled = False
def test_foo(self):
pass
test = run_testcase(MyTest)[0][0]
assert not hasattr(test, 'cassette')
assert not hasattr(test, "cassette")
def test_cassette_library_dir():
class MyTest(VCRTestCase):
def test_foo(self):
pass
def _get_cassette_library_dir(self):
return '/testing'
return "/testing"
test = run_testcase(MyTest)[0][0]
assert test.cassette._path.startswith('/testing/')
assert test.cassette._path.startswith("/testing/")
def test_cassette_name():
class MyTest(VCRTestCase):
def test_foo(self):
pass
def _get_cassette_name(self):
return 'my-custom-name'
return "my-custom-name"
test = run_testcase(MyTest)[0][0]
assert os.path.basename(test.cassette._path) == 'my-custom-name'
assert os.path.basename(test.cassette._path) == "my-custom-name"
def test_vcr_kwargs_overridden():
class MyTest(VCRTestCase):
def test_foo(self):
pass
def _get_vcr_kwargs(self):
kwargs = super(MyTest, self)._get_vcr_kwargs()
kwargs['record_mode'] = 'new_episodes'
kwargs["record_mode"] = "new_episodes"
return kwargs
test = run_testcase(MyTest)[0][0]
assert test.cassette.record_mode == 'new_episodes'
assert test.cassette.record_mode == "new_episodes"
def test_vcr_kwargs_passed():
class MyTest(VCRTestCase):
def test_foo(self):
pass
def _get_vcr_kwargs(self):
return super(MyTest, self)._get_vcr_kwargs(
record_mode='new_episodes',
record_mode="new_episodes",
)
test = run_testcase(MyTest)[0][0]
assert test.cassette.record_mode == 'new_episodes'
assert test.cassette.record_mode == "new_episodes"
def test_vcr_kwargs_cassette_dir():
# Test that _get_cassette_library_dir applies if cassette_library_dir
# is absent from vcr kwargs.
class MyTest(VCRTestCase):
def test_foo(self):
pass
def _get_vcr_kwargs(self):
return dict(
record_mode='new_episodes',
record_mode="new_episodes",
)
_get_cassette_library_dir = MagicMock(return_value='/testing')
_get_cassette_library_dir = MagicMock(return_value="/testing")
test = run_testcase(MyTest)[0][0]
assert test.cassette._path.startswith('/testing/')
assert test.cassette._path.startswith("/testing/")
assert test._get_cassette_library_dir.call_count == 1
# Test that _get_cassette_library_dir is ignored if cassette_library_dir
@@ -109,30 +113,35 @@ def test_vcr_kwargs_cassette_dir():
class MyTest(VCRTestCase):
def test_foo(self):
pass
def _get_vcr_kwargs(self):
return dict(
cassette_library_dir='/testing',
cassette_library_dir="/testing",
)
_get_cassette_library_dir = MagicMock(return_value='/ignored')
_get_cassette_library_dir = MagicMock(return_value="/ignored")
test = run_testcase(MyTest)[0][0]
assert test.cassette._path.startswith('/testing/')
assert test.cassette._path.startswith("/testing/")
assert test._get_cassette_library_dir.call_count == 0
def test_get_vcr_with_matcher(tmpdir):
cassette_dir = tmpdir.mkdir('cassettes')
cassette_dir = tmpdir.mkdir("cassettes")
assert len(cassette_dir.listdir()) == 0
mock_matcher = MagicMock(return_value=True, __name__='MockMatcher')
mock_matcher = MagicMock(return_value=True, __name__="MockMatcher")
class MyTest(VCRTestCase):
def test_foo(self):
self.response = urlopen('http://example.com').read()
self.response = urlopen("http://example.com").read()
def _get_vcr(self):
myvcr = super(MyTest, self)._get_vcr()
myvcr.register_matcher('mymatcher', mock_matcher)
myvcr.match_on = ['mymatcher']
myvcr.register_matcher("mymatcher", mock_matcher)
myvcr.match_on = ["mymatcher"]
return myvcr
def _get_cassette_library_dir(self):
return str(cassette_dir)
@@ -145,23 +154,27 @@ def test_get_vcr_with_matcher(tmpdir):
test = run_testcase(MyTest)[0][0]
assert len(test.cassette.requests) == 1
assert mock_matcher.called
assert repr(mock_matcher.mock_calls[0]) == 'call(<Request (GET) http://example.com>, <Request (GET) http://example.com>)'
assert (
repr(mock_matcher.mock_calls[0])
== "call(<Request (GET) http://example.com>, <Request (GET) http://example.com>)"
)
def test_testcase_playback(tmpdir):
cassette_dir = tmpdir.mkdir('cassettes')
cassette_dir = tmpdir.mkdir("cassettes")
assert len(cassette_dir.listdir()) == 0
# First test actually reads from the web.
class MyTest(VCRTestCase):
def test_foo(self):
self.response = urlopen('http://example.com').read()
self.response = urlopen("http://example.com").read()
def _get_cassette_library_dir(self):
return str(cassette_dir)
test = run_testcase(MyTest)[0][0]
assert b'illustrative examples' in test.response
assert b"illustrative examples" in test.response
assert len(test.cassette.requests) == 1
assert test.cassette.play_count == 0
@@ -169,7 +182,7 @@ def test_testcase_playback(tmpdir):
test2 = run_testcase(MyTest)[0][0]
assert test.cassette is not test2.cassette
assert b'illustrative examples' in test.response
assert b"illustrative examples" in test.response
assert len(test2.cassette.requests) == 1
assert test2.cassette.play_count == 1