Any Python socket communication in unittests (decorated with the @vcr
)
and/or doctests (containing a +VCR
) will be recorded on the first run
and saved into a special 'vcrtapes' directory as single pickled file for
each test case. Future test runs will reuse those recorded network session
allowing for faster tests without any network connection. In order to
create a new recording one just needs to remove/rename the pickled session
file(s).
So pretty similar to VCR.py but on socket level instead of HTTP/HTTPS level only - so therefore it should be more powerful ...
- Inspired by:
Network tests tend to fail sporadically, need usually a very long time (compared to other tests) and (surprise!) require a network connection (if not mocked). This module tackles all three issues mentioned above.
Install from GitHub:
pip install -U https://github.com/obspy/vcr/archive/master.zip
Just decorate your unit tests with @vcr
:
import unittest
import requests
from vcr import vcr
class MyTestCase(unittest.TestCase):
@vcr
def test_something(self):
response = requests.get('http://example.com')
self.assertEqual(response.status_code, 200)
@vcr(debug=True, overwrite=True, tape_file='python.vcr')
def test_something_else(self):
response = requests.get('http://python.org')
self.assertEqual(response.status_code, 200)
VCR functionality within doctests requires currently a monkey patch and the
+VCR
keyword somewhere within the doctest as shown in
test_doctest.py.
This library uses the LGPLv3 license. See LICENSE.txt for more details.