Skip to main content

A VCR imitation for python-requests

Project description

betamax

Betamax is a VCR imitation for requests. This will make mocking out requests much easier. Tested on Travis CI.

Example Use

from betamax import Betamax
from requests import Session
from unittest import TestCase

with Betamax.configure() as config:
    config.cassette_library_dir = 'tests/fixtures/cassettes'


class TestGitHubAPI(TestCase):
    def setUp(self):
        self.session = Session()
        self.headers.update(...)

    # Set the cassette in a line other than the context declaration
    def test_user(self):
        with Betamax(self.session) as vcr:
            vcr.use_cassette('user')
            resp = self.session.get('https://api.github.com/user',
                                    auth=('user', 'pass'))
            assert resp.json()['login'] is not None

    # Set the cassette in line with the context declaration
    def test_repo(self):
        with Betamax(self.session).use_cassette('repo') as vcr:
            resp = self.session.get(
                'https://api.github.com/repos/sigmavirus24/github3.py'
                )
            assert resp.json()['owner'] != {}

VCR Cassette Compatiblity

Betamax can use any VCR-recorded cassette as of this point in time. The only caveat is that python-requests returns a URL on each response. VCR does not store that in a cassette now but we will. Any VCR-recorded cassette used to playback a response will unfortunately not have a URL attribute on responses that are returned. This is a minor annoyance but not something that can be fixed.

History

0.1.2 - 2013-09-21

  • Fix issues with how requests parses cookies out of responses

  • Fix unicode issues with Response#text (trying to use Response#json raises exception because it cannot use string decoding on a unicode string)

0.1.1 - 2013-09-19

  • Fix issue where there is a unicode character not in range(128)

0.1.0 - 2013-09-17

  • Initial Release

  • Support for VCR generated cassettes (JSON only)

  • Support for re_record_interval

  • Support for the once, all, new_episodes, all cassette modes

  • Support for filtering sensitive data

  • Support for the following methods of request matching:

    • Method

    • URI

    • Host

    • Path

    • Query String

    • Body

    • Headers

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

betamax-0.1.2.tar.gz (10.7 kB view details)

Uploaded Source

Built Distribution

betamax-0.1.2-py27-none-any.whl (15.0 kB view details)

Uploaded Python 2.7

File details

Details for the file betamax-0.1.2.tar.gz.

File metadata

  • Download URL: betamax-0.1.2.tar.gz
  • Upload date:
  • Size: 10.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for betamax-0.1.2.tar.gz
Algorithm Hash digest
SHA256 f4d35ff163d59c0c76f610308222372a2200db9b89ccb97110f793bef910ccf6
MD5 471e0825481e76bfec24a64acde0ca85
BLAKE2b-256 a098fe69c266015c4ce48130e4287417e3806cb1a4d90f321d59e7886bb5075c

See more details on using hashes here.

File details

Details for the file betamax-0.1.2-py27-none-any.whl.

File metadata

File hashes

Hashes for betamax-0.1.2-py27-none-any.whl
Algorithm Hash digest
SHA256 71766c809576f3626277c6c9f3e6c7340c1940ce07ea44c82370ac11a820c707
MD5 9708abe47c00d222333853af245e1473
BLAKE2b-256 bcada599064772593eb8e6c7455363a6c9ce439476fa3066b7ac942430b3a22c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page