PonyORM in Pytest
Project description
PonyORM in Pytest
Plugin for use Pony ORM in Pytest.
This Pytest plugin was generated with Cookiecutter along with @hackebrot’s Cookiecutter-pytest-plugin template.
Features
Access Database instance (db) via ponydb fixture
Mark tests to auto allow use of pony.orm.db_session
Database is by default cleared after each test
Database reset can be cancelled for test/class/module
Requirements
Tested from Pony ORM >= ‘0.7.3’ and python : 3.5, 3.6
Installation
You can install “pytest-ponyorm” via pip from PyPI:
$ pip install pytest-ponyorm or $ pipenv install -d pytest-ponyorm
Usage
First, configure PONY_DB in pytest.ini. PonyORM main Database instance module location must be specified in pytest.ini to make it work : for example if db is in /path/models/main.py, you must configure like this :
[pytest]
PONY_DB=path.models.main
Then just apply the pony marker :
# models.py
db = Database()
# test.py
@pytest.mark.pony
def my_test(ponydb):
new_mod = ponydb.Mymodel(name="me",...)
You can mark a class or function with @pytest.mark.pony or the whole module with pytestmark = pytest.mark.pony
The marker pony takes one argument : reset_db, default is True. In this case the marked test doesn’t reset the database at ending.
# test.py
pytestmark = pytest.mark.pony # marks all tests of the module
def test1:
pass
def test2:
pass
@pytest.mark.pony(reset_db=False)
def test 3:
pass
# test3 will use database in the state that test2 left it.
About Reseting Database:
Test database tables are dropped/recreate before the test SESSION.
Initialy this plugin did drop/recreate table for each test. Due tu perfomance reason, this has changed. Now tables are cleared but not dropped.
Sql sequences like “auto PrimaryKey” will also be reseted but actually, it’s only supported for PostreSQL and Sqlite. For other databases, Primarikey might not start at 1 for each test. This has to be considered when writing tests.
About Fixtures :
Fixtures should not use db_session decorator or context manager. Each test is automaticaly run inside a db_session and each operation inside fixtures will be commited at test start.
Contributing
Contributions are very welcome. Tests can be run with tox, please ensure the coverage at least stays the same before you submit a pull request.
License
Distributed under the terms of the GNU GPL v3.0 license, “pytest-ponyorm” is free and open source software
Issues
If you encounter any problems, please file an issue along with a detailed description.
Changelog
- 0.3.1 :
sql sequence reset for postgre and sqlite
testing py35/36 and pg/sqlite
- 0.3.0 :
made faster with just deleting database entries after each test
no drop/recreate
db_session splitted into 2 hooks, not anymore in a fixture
- 0.2.9 :
add fixture autocommit before run test
- 0.2.0 :
add marker
- 0.1.5 :
add db_session for each test
- 0.1.0 :
auto clear database
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
Hashes for pytest_ponyorm-0.3.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a94507ad2944081da4785ba2c806ae39d7f58fee70c99f1eac592511f931c9f5 |
|
MD5 | a4c7ab09cf9b65c144048e705b6e1850 |
|
BLAKE2b-256 | bb94d8fe7ca6cddbc4d2adc6a218045011b4da06ff6f64263977cb7ed7ae51cd |