Skip to main content

Snapshot Testing utils for Python

Project description

SnapshotTest

Snapshot testing is a way to test your APIs without writing actual test cases.

  1. A snapshot is a single state of your API, saved in a file.

  2. You have a set of snapshots for your API endpoints.

  3. Once you add a new feature, you can generate automatically new snapshots for the updated API.

travis pypi

Installation

$ pip install snapshottest

Usage with unittest

from snapshottest import TestCase

class APITestCase(TestCase):
    def test_api_me(self):
        """Testing the API for /me"""
        my_api_response = api.client.get('/me')
        self.assertMatchSnapshot(my_api_response)

Check the Unittest example.

Usage with pytest

def test_mything(snapshot):
    """Testing the API for /me"""
    my_api_response = api.client.get('/me')
    snapshot.assert_match(my_api_response)

If you want to update the snapshots automatically you can use the --snapshot-update config.

Check the Pytest example.

Contributing

After cloning this repo, ensure dependencies are installed by running:

pip install -e ".[test]"

After developing, the full test suite can be evaluated by running:

py.test tests --cov=snapshottest

Notes

This package is heavily insipired in jest snapshot testing.

Reasons for use this package

Most of this content is taken from the Jest snapshot blogpost.

We want to make it as frictionless as possible to write good tests that are useful. We observed that when engineers are provided with ready-to-use tools, they end up writing more tests, which in turn results in stable and healthy code bases.

However engineers frequently spend more time writing a test than the component itself. As a result many people stopped writing tests altogether which eventually led to instabilities.

A typical snapshot test case for a mobile app renders a UI component, takes a screenshot, then compares it to a reference image stored alongside the test. The test will fail if the two images do not match: either the change is unexpected, or the screenshot needs to be updated to the new version of the UI component.

Snapshot Testing with SnapshotTest

A similar approach can be taken when it comes to testing your APIs. Instead of rendering the graphical UI, which would require building the entire app, you can use a test renderer to quickly generate a serializable value for your API response.

License

MIT License

coveralls

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

snapshottest-0.1.0.tar.gz (7.4 kB view details)

Uploaded Source

File details

Details for the file snapshottest-0.1.0.tar.gz.

File metadata

  • Download URL: snapshottest-0.1.0.tar.gz
  • Upload date:
  • Size: 7.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for snapshottest-0.1.0.tar.gz
Algorithm Hash digest
SHA256 5ff2d22b6d4be41c0b5d3b8bdb7fd800d35fd4bcba2180e12ed47b7f600217e3
MD5 17c92bfcda3dff06da620f0b67502eae
BLAKE2b-256 c6c5a7f8146738961868c29dfb7151d57ff22deadbbe2c290131ab6206d2895c

See more details on using hashes here.

Supported by

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