fake-session-maker 0.3.0

Creator: bradpython12

Last updated:

Add to Cart

Description:

fakesessionmaker 0.3.0

fake_session_maker








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.

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.