1import os 2import json 3import pytest 4import vcr 5from six.moves.urllib.request import urlopen 6 7 8def test_set_serializer_default_config(tmpdir, httpbin): 9 my_vcr = vcr.VCR(serializer='json') 10 11 with my_vcr.use_cassette(str(tmpdir.join('test.json'))): 12 assert my_vcr.serializer == 'json' 13 urlopen(httpbin.url + '/get') 14 15 with open(str(tmpdir.join('test.json'))) as f: 16 assert json.loads(f.read()) 17 18 19def test_default_set_cassette_library_dir(tmpdir, httpbin): 20 my_vcr = vcr.VCR(cassette_library_dir=str(tmpdir.join('subdir'))) 21 22 with my_vcr.use_cassette('test.json'): 23 urlopen(httpbin.url + '/get') 24 25 assert os.path.exists(str(tmpdir.join('subdir').join('test.json'))) 26 27 28def test_override_set_cassette_library_dir(tmpdir, httpbin): 29 my_vcr = vcr.VCR(cassette_library_dir=str(tmpdir.join('subdir'))) 30 31 cld = str(tmpdir.join('subdir2')) 32 33 with my_vcr.use_cassette('test.json', cassette_library_dir=cld): 34 urlopen(httpbin.url + '/get') 35 36 assert os.path.exists(str(tmpdir.join('subdir2').join('test.json'))) 37 assert not os.path.exists(str(tmpdir.join('subdir').join('test.json'))) 38 39 40def test_override_match_on(tmpdir, httpbin): 41 my_vcr = vcr.VCR(match_on=['method']) 42 43 with my_vcr.use_cassette(str(tmpdir.join('test.json'))): 44 urlopen(httpbin.url) 45 46 with my_vcr.use_cassette(str(tmpdir.join('test.json'))) as cass: 47 urlopen(httpbin.url + '/get') 48 49 assert len(cass) == 1 50 assert cass.play_count == 1 51 52 53def test_missing_matcher(): 54 my_vcr = vcr.VCR() 55 my_vcr.register_matcher("awesome", object) 56 with pytest.raises(KeyError): 57 with my_vcr.use_cassette("test.yaml", match_on=['notawesome']): 58 pass 59