Library for processing and managing database metadata
Project description
DeltaSnap
A tool to capture any subset of database records and compare changes between captures. It is mainly used for functional testing and debugging.
Installation
pip install deltasnap
Requirements
- Python 3.6 or higher.
DeltaSnap works with any database or ORM that can interact with a database. You must have a database connection and an ORM such as SQLAlchemy or Django to use this tool effectively.
Supported ORMs:
- SQLAlchemy (any version >= 1.3)
- Django (any version >= 3.0)
Ensure that your project is properly connected to a database before using DeltaSnap.
Usage
from deltasnap import DBCapturer, DBConfig
# Set up the DBCapturer with the appropriate configuration
db_capturer = DBCapturer(
DBConfig(
db_source="sqlalchemy", # Choose "sqlalchemy" or "django"
test_session=test_session, # Provide your test session (SQLAlchemy or Django session)
base=base, # Provide the SQLAlchemy Base model. Django does not require this.
)
)
def test_start_game(test_session):
initial_capture = db_capturer.capture_all_records(test_session)
# Logic to test
start_game()
final_capture = db_capturer.capture_all_records(test_session)
changes, created, deleted = db_capturer.compare_capture(initial_capture, final_capture)
# Assertions to validate the changes
assert not deleted.data # No records were deleted
assert created.data == {
("cards", 1),
("cards", 2),
("cards", 3)
} # 3 records were created in the 'cards' table
assert changes.data == {
('games', 1): {
'started': (False, True),
'turn_start': (None, '2021-10-10T10:00:00Z')
}
} # There were changes in 2 columns of the record with id 1 from the 'games' table. For example, the 'started' field changed from False to True.
Advantages
- Full coverage: Automatically validates all changes in the database.
- Simplification: Reduces the use of fixed
assertsthat may be missed by the tester. - Automatic evolution: Adapts to changes in the database schema.
- Complete comparisons: Validates both previous and current values.
License
This project is licensed under the MIT License.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file deltasnap-0.1.2.tar.gz.
File metadata
- Download URL: deltasnap-0.1.2.tar.gz
- Upload date:
- Size: 3.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1ff3218946980988bc6a850fcaef907304ef702f2d12570e2cdbd915170edabe
|
|
| MD5 |
377c48d8bfc15eecadbee922a17ccf07
|
|
| BLAKE2b-256 |
295063680732ea77a6c99dfa6c690ab5488aa0d6e86c871402fb0cde7c0ff57d
|
File details
Details for the file deltasnap-0.1.2-py3-none-any.whl.
File metadata
- Download URL: deltasnap-0.1.2-py3-none-any.whl
- Upload date:
- Size: 3.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9871a9b540c55bbdb94fa75f8ec2ef21db5ed5f38a8fe17b8e40a8f640e991ba
|
|
| MD5 |
d80dcc4824fd1cbb8415c094f1762662
|
|
| BLAKE2b-256 |
d611a98707992a006a9d289501cfc88cfef88b95d33387bbbc2d4754f093dabd
|