Skip to main content

Cassette is a testing tool that stores external HTTP request in YAML file.

Project description

  • The first time you run your tests, cassette will store all the external requests response in a YAML file.

  • Next time you run your tests, cassette will fetch those responses from the YAML file. You can now run your tests while being offline.

import urllib2

import cassette


def test_get_root_domains():
    """Get the root domains."""

    with cassette.play("data/responses.yaml"):

        # If the request is not already stored in responses.yaml, cassette
        # will request the URL and store its response in the file.
        r = urllib2.urlopen("http://www.internic.net/domain/named.root")

        # This time, the request response must be in the file. The external
        # request is not made. cassette retrieves the response from the
        # file.
        r = urllib2.urlopen("http://www.internic.net/domain/named.root")

    assert "A.ROOT-SERVERS.NET" in r.read(10000)

Installation

Locally:

$ python setup.py develop

Via PyPi:

$ pip install cassette

Usage

cassette provides a play context:

import cassette

with cassette.play("./data/responses.yaml"):
    urllib2.urlopen("http://...")

Any urllib2.urlopen request happening in this context will go through cassette’s mocked version of urlopen.

You can also setup the context manually:

import cassette

cassette.insert("./data/responses.yaml")
urllib2.urlopen("http://...")
cassette.eject()

Running cassette tests

Install requirements:

$ pip install -r requirements-dev.txt

Run tests:

$ fab test

Similar libraries

  • vcrpy: great library but you can store only one request per YAML file…

  • vcr: in Ruby

Limitations

This package should be considered alpha:

  • Only tested with urllib2

  • Should not work with urllib and requests

  • The format used is not compatible with vcr or vcrpy

  • Only tested with Python 2.7

  • File format may change.

License

cassette is available under the MIT License.

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

cassette-0.1.4.tar.gz (4.9 kB view hashes)

Uploaded Source

Built Distribution

cassette-0.1.4.macosx-10.8-intel.tar.gz (6.2 kB view hashes)

Uploaded Source

Supported by

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