If you don’t like VCR’s defaults, you can set options by instantiating a
VCR class and setting the options on it.
import vcr my_vcr = vcr.VCR( serializer='json', cassette_library_dir='fixtures/cassettes', record_mode='once', match_on=['uri', 'method'], ) with my_vcr.use_cassette('test.json'): # your http code here
Otherwise, you can override options each time you use a cassette.
with vcr.use_cassette('test.yml', serializer='json', record_mode='once'): # your http code here
Note: Per-cassette overrides take precedence over the global config.
Request matching is configurable and allows you to change which requests
VCR considers identical. The default behavior is
['method', 'scheme', 'host', 'port', 'path', 'query'] which means
that requests with both the same URL and method (ie POST or GET) are
This can be configured by changing the
The following options are available :
method (for example, POST or GET)
uri (the full URI.)
host (the hostname of the server receiving the request)
port (the port of the server receiving the request)
path (the path of the request)
query (the query string of the request)
raw_body (the entire request body as is)
body (the entire request body unmarshalled by content-type i.e. xmlrpc, json, form-urlencoded, falling back on raw_body)
headers (the headers of the request)
Backwards compatible matchers:
If these options don’t work for you, you can also register your own request matcher. This is described in the Advanced section of this README.