Welcome to pytest-vcr
Py.test plugin for managing VCR.py cassettes.
Quick Start
Install the plugin:
pip install pytest-vcr
Annotate your tests:
@pytest.mark.vcr()
def test_iana():
response = urlopen('http://www.iana.org/domains/reserved').read()
assert b'Example domains' in response
And that's it!
A new file cassettes/test_iana.yaml
will be created next to your test file on the first run.
This file should be committed to a VCS.
Example configuration
Filtering saved request/response
VCR.py registers full request and response, including headers, which often include passwords or API keys. It's important to make sure you aren't leaving any secrets in your cassettes. For example, when using HTTP Basic authentication, you should add this to your conftest:
@pytest.fixture(scope='module')
def vcr_config():
return {
# Replace the Authorization request header with "DUMMY" in cassettes
"filter_headers": [('authorization', 'DUMMY')],
}
For a way to specify separate configuration for different tests see Configuration.
Changing the cassettes library path
By default pytest-vcr will put cassettes in a cassettes
directory next to your tests.
You can change that by overriding the vcr_cassette_dir
fixture:
@pytest.fixture(scope='module')
def vcr_cassette_dir(request):
# Put all cassettes in vhs/{module}/{test}.yaml
return os.path.join('vhs', request.module.__name__)
Running on CI
When running your tests on CI it's recommended to use the --vcr-record=none
option.
This way you can make sure that you have committed all the cassettes.