from urllib.request import urlopen import pytest import vcr from vcr.errors import CannotOverwriteExistingCassetteException def test_making_extra_request_raises_exception(tmpdir, httpbin): # make two requests in the first request that are considered # identical (since the match is based on method) with vcr.use_cassette(str(tmpdir.join("test.json")), match_on=["method"]): urlopen(httpbin.url + "/status/200") urlopen(httpbin.url + "/status/201") # Now, try to make three requests. The first two should return the # correct status codes in order, and the third should raise an # exception. with vcr.use_cassette(str(tmpdir.join("test.json")), match_on=["method"]): assert urlopen(httpbin.url + "/status/200").getcode() == 200 assert urlopen(httpbin.url + "/status/201").getcode() == 201 with pytest.raises(CannotOverwriteExistingCassetteException): urlopen(httpbin.url + "/status/200")