Skip to main content

Easily setup relational database fixtures and assert database contents in unittest.

Project description

Easily setup relational database fixtures and assert database contents in unittest.

Install

$ pip install db_integration_test

Usage

from dbit import DatabaseTestCase, fixture

class SomeTest(DatabaseTestCase):

    def setUp(self):
        # the DB connection has to be created before the setUp is run.
        # DatabaseTestCase only ever creates a single connection. Multiple calls to connect are ignored.
        # to connect to a different DB, call self.disconnect(), then self.connect() with a different connection string.
        # uses SQLAlchemy under the hood
        self.connect('postgresql+psycopg2://user:pass@localhost/test_db')
        super().setUp()

    @fixture("table_name", [{'id': 1, 'value': 'abc'}, {'id': 2, 'value': 'def'}])
    def test_something_with_your_database(self):
        # interact with the DB
        # self.engine contains the SQLAlchemy Engine
        # self.session contains the SQLAlchemy ORM session
        # self.base contains the automap base for the current database
        # self.disconnect() disconnects from the DB

        # assert that the table contents match the fixture exactly
        self.assertMatchFixture("table_name", self.get_table_contents(self.base.classes.table_name))

        # assert that some number of rows appear in the fixture
        self.assertAllInFixture("table_name", [{'id': 1, 'value': 'abc'}])

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

db_integration_test-1.1.0.tar.gz (5.3 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