Skip to content
Automatically mock your HTTP interactions to simplify and speed up testing
Branch: master
Clone or download
lamenezes Merge pull request #409 from jxltom/pin-requires-version-for-python34
Pin yarl and multidict version for python34
Latest commit c74a857 Nov 14, 2018
Type Name Latest commit message Commit time
Failed to load latest commit information.
docs Merge pull request #379 from adamchainz/patch-1 Oct 15, 2018
tests support ClientResponse.text(errors=) kwarg Oct 15, 2018
vcr Fix flake8 in python3 Nov 14, 2018
.travis.yml Add py34 to CI builds Sep 22, 2018
LICENSE.txt Update copyright. Mar 31, 2015 Exclude __pycache__ dirs & compiled files in sdist Jan 10, 2016
README.rst Merge pull request #374 from adamchainz/readme_supported Sep 18, 2018
setup.cfg packaging fixes Jun 30, 2015
tox.ini Add py34 to CI builds Sep 22, 2018
vcr.png Update README and bump version Aug 24, 2013


PyPI Python versions Build Status Waffle Ready Join the chat at

This is a Python version of Ruby's VCR library.

Source code

Rationale simplifies and speeds up tests that make HTTP requests. The first time you run code that is inside a context manager or decorated function, records all HTTP interactions that take place through the libraries it supports and serializes and writes them to a flat file (in yaml format by default). This flat file is called a cassette. When the relevant piece of code is executed again, will read the serialized requests and responses from the aforementioned cassette file, and intercept any HTTP requests that it recognizes from the original test run and return the responses that corresponded to those requests. This means that the requests will not actually result in HTTP traffic, which confers several benefits including:

  • The ability to work offline
  • Completely deterministic tests
  • Increased test execution speed

If the server you are testing against ever changes its API, all you need to do is delete your existing cassette files, and run your tests again. will detect the absence of a cassette file and once again record all HTTP interactions, which will update them to correspond to the new API.


This library uses the MIT license. See LICENSE.txt for more details

You can’t perform that action at this time.