import os import json import pytest import vcr from six.moves.urllib.request import urlopen def test_set_serializer_default_config(tmpdir, httpbin): my_vcr = vcr.VCR(serializer='json') with my_vcr.use_cassette(str(tmpdir.join('test.json'))): assert my_vcr.serializer == 'json' urlopen(httpbin.url + '/get') with open(str(tmpdir.join('test.json'))) as f: assert json.loads(f.read()) def test_default_set_cassette_library_dir(tmpdir, httpbin): my_vcr = vcr.VCR(cassette_library_dir=str(tmpdir.join('subdir'))) with my_vcr.use_cassette('test.json'): urlopen(httpbin.url + '/get') assert os.path.exists(str(tmpdir.join('subdir').join('test.json'))) def test_override_set_cassette_library_dir(tmpdir, httpbin): my_vcr = vcr.VCR(cassette_library_dir=str(tmpdir.join('subdir'))) cld = str(tmpdir.join('subdir2')) with my_vcr.use_cassette('test.json', cassette_library_dir=cld): urlopen(httpbin.url + '/get') assert os.path.exists(str(tmpdir.join('subdir2').join('test.json'))) assert not os.path.exists(str(tmpdir.join('subdir').join('test.json'))) def test_override_match_on(tmpdir, httpbin): my_vcr = vcr.VCR(match_on=['method']) with my_vcr.use_cassette(str(tmpdir.join('test.json'))): urlopen(httpbin.url) with my_vcr.use_cassette(str(tmpdir.join('test.json'))) as cass: urlopen(httpbin.url + '/get') assert len(cass) == 1 assert cass.play_count == 1 def test_missing_matcher(): my_vcr = vcr.VCR() my_vcr.register_matcher("awesome", object) with pytest.raises(KeyError): with my_vcr.use_cassette("test.yaml", match_on=['notawesome']): pass