def test_vcr_use_cassette(): record_mode = mock.Mock() test_vcr = VCR(record_mode=record_mode) with mock.patch( 'vcr.cassette.Cassette.load', return_value=mock.MagicMock(inject=False)) as mock_cassette_load: @test_vcr.use_cassette('test') def function(): pass assert mock_cassette_load.call_count == 0 function() assert mock_cassette_load.call_args[1]['record_mode'] is record_mode # Make sure that calls to function now use cassettes with the # new filter_header_settings test_vcr.record_mode = mock.Mock() function() assert mock_cassette_load.call_args[1][ 'record_mode'] == test_vcr.record_mode # Ensure that explicitly provided arguments still supercede # those on the vcr. new_record_mode = mock.Mock() with test_vcr.use_cassette('test', record_mode=new_record_mode) as cassette: assert cassette.record_mode == new_record_mode
def test_arg_getter_functionality(): arg_getter = mock.Mock(return_value={'path': 'test'}) context_decorator = Cassette.use_arg_getter(arg_getter) with context_decorator as cassette: assert cassette._path == 'test' arg_getter.return_value = {'path': 'other'} with context_decorator as cassette: assert cassette._path == 'other' arg_getter.return_value = { 'path': 'other', 'filter_headers': ('header_name', ) } @context_decorator def function(): pass with mock.patch.object( Cassette, 'load', return_value=mock.MagicMock(inject=False)) as cassette_load: function() cassette_load.assert_called_once_with(**arg_getter.return_value)
def test_arg_getter_functionality(): arg_getter = mock.Mock(return_value={"path": "test"}) context_decorator = Cassette.use_arg_getter(arg_getter) with context_decorator as cassette: assert cassette._path == "test" arg_getter.return_value = {"path": "other"} with context_decorator as cassette: assert cassette._path == "other" arg_getter.return_value = { "path": "other", "filter_headers": ("header_name", ) } @context_decorator def function(): pass with mock.patch.object( Cassette, "load", return_value=mock.MagicMock(inject=False)) as cassette_load: function() cassette_load.assert_called_once_with(**arg_getter.return_value)
a = Cassette('test') a.append('foo', 'bar') a.play_response('foo') with pytest.raises(UnhandledHTTPRequestError): a.play_response('foo') def make_get_request(): conn = httplib.HTTPConnection("www.python.org") conn.request("GET", "/index.html") return conn.getresponse() @mock.patch('vcr.cassette.requests_match', return_value=True) @mock.patch('vcr.cassette.load_cassette', lambda *args, **kwargs: (('foo', ), (mock.MagicMock(), ))) @mock.patch('vcr.cassette.Cassette.can_play_response_for', return_value=True) @mock.patch('vcr.stubs.VCRHTTPResponse') def test_function_decorated_with_use_cassette_can_be_invoked_multiple_times( *args): decorated_function = Cassette.use(path='test')(make_get_request) for i in range(4): decorated_function() def test_arg_getter_functionality(): arg_getter = mock.Mock(return_value={'path': 'test'}) context_decorator = Cassette.use_arg_getter(arg_getter) with context_decorator as cassette: assert cassette._path == 'test'
a.append("foo", "bar") a.play_response("foo") with pytest.raises(UnhandledHTTPRequestError): a.play_response("foo") def make_get_request(): conn = httplib.HTTPConnection("www.python.org") conn.request("GET", "/index.html") return conn.getresponse() @mock.patch("vcr.cassette.requests_match", return_value=True) @mock.patch( "vcr.cassette.FilesystemPersister.load_cassette", classmethod(lambda *args, **kwargs: (("foo", ), (mock.MagicMock(), ))), ) @mock.patch("vcr.cassette.Cassette.can_play_response_for", return_value=True) @mock.patch("vcr.stubs.VCRHTTPResponse") def test_function_decorated_with_use_cassette_can_be_invoked_multiple_times( *args): decorated_function = Cassette.use(path="test")(make_get_request) for i in range(4): decorated_function() def test_arg_getter_functionality(): arg_getter = mock.Mock(return_value={"path": "test"}) context_decorator = Cassette.use_arg_getter(arg_getter) with context_decorator as cassette:
def test_cassette_cant_read_same_request_twice(): a = Cassette('test') a.append('foo', 'bar') a.play_response('foo') with pytest.raises(UnhandledHTTPRequestError): a.play_response('foo') def make_get_request(): conn = httplib.HTTPConnection("www.python.org") conn.request("GET", "/index.html") return conn.getresponse() @mock.patch('vcr.cassette.requests_match', return_value=True) @mock.patch('vcr.cassette.load_cassette', lambda *args, **kwargs: (('foo',), (mock.MagicMock(),))) @mock.patch('vcr.cassette.Cassette.can_play_response_for', return_value=True) @mock.patch('vcr.stubs.VCRHTTPResponse') def test_function_decorated_with_use_cassette_can_be_invoked_multiple_times(*args): decorated_function = Cassette.use(path='test')(make_get_request) for i in range(4): decorated_function() def test_arg_getter_functionality(): arg_getter = mock.Mock(return_value={'path': 'test'}) context_decorator = Cassette.use_arg_getter(arg_getter) with context_decorator as cassette: assert cassette._path == 'test'