Skip to main content

Create a SQLAlchemy session_maker that won't commit to db for testing purposes.

Project description

fake_session_maker

Latest Release Pipeline Supported Python versions Imports: isort PyPI - Downloads License: MIT Black Markdown: pymarkdown

The fake_session_maker is a SQLAlchemy and Pytest-based package designed to facilitate database testing by replacing a classic SQLAlchemy SessionMaker context manager.

Features

  • Replaces the SQLAlchemy SessionMaker context manager with a "read-only" session during tests.
  • Rollbacks database state at the end of each test, ensuring isolation between tests.
  • Simple fixture-based usage integrates smoothly with your Pytest suite.

Drawbacks

Code that plan to be tested using fake_session_maker have the following limitations:

  • Prevent the use of factory_boy automated build and bulk. Each object needs to be created and added to the session manually.

Installation

pip install fake_session_maker

Usage

Define the fixture

Below is an example of how to use fake_session_maker in a pytest fixture:

import pytest
from fake_session_maker import fsm


# Assuming Namespace is where the session_maker is defined

@pytest.fixture
def fake_session_maker():
    with fsm(
            db_url="sqlite:///tests/test.sqlite",
            namespace=Namespace,
            symbol_name="session_maker",
    ) as fake_session_maker_:
        yield fake_session_maker_

# Now, you can use fake_session_maker in your tests

Use the fixture

Below is an example of how to use fake_session_maker fixture in a test:

# Each test will have a fresh database, empty of any data
@pytest.mark.parametrize("name", ["jane", "joe"])
def test_create_example(fake_session_maker, name):
    result = create_example('test')
    assert result == 'success'
    with fake_session_maker() as session:
        # Each time we check, only the data created in this test will be present
        assert session.query(models.User).count() == 1

See the tests.test_fsm.py directory for a full example.

Contributing

Contributions are welcome! Please see CONTRIBUTING.md for more details.

Testing

If you want to run the tests locally, you can follow instructions here: CONTRIBUTING.md #testing.

License

Distributed under the MIT License. See LICENSE for more information.

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

fake_session_maker-0.3.0.tar.gz (338.4 kB view details)

Uploaded Source

Built Distribution

fake_session_maker-0.3.0-py3-none-any.whl (5.6 kB view details)

Uploaded Python 3

File details

Details for the file fake_session_maker-0.3.0.tar.gz.

File metadata

  • Download URL: fake_session_maker-0.3.0.tar.gz
  • Upload date:
  • Size: 338.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.4

File hashes

Hashes for fake_session_maker-0.3.0.tar.gz
Algorithm Hash digest
SHA256 bf0afd5eb4083481278037a29b9434fd2ea309272e1b19906ad4c2ef60d9d914
MD5 0471a346507c6f6f0c3fd91fdf53600b
BLAKE2b-256 aff7ab7a8da10d904d2f0884a271be99c1aae82a2609fa37cd95ee35ecfc9d3d

See more details on using hashes here.

File details

Details for the file fake_session_maker-0.3.0-py3-none-any.whl.

File metadata

File hashes

Hashes for fake_session_maker-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 756dc26c00f549f232a29107593216e59946fe7fe9758c4c66dbfa65d60b21ee
MD5 8942e7ee4c498a82c296b232783851cb
BLAKE2b-256 85af6affc74006484bc6095fad2e153b29284bc50db852b4eb761bdef3a9136b

See more details on using hashes here.

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