Ready-made database fixtures for your pytest tests.
- π Easy-to-use database fixtures
- π Support for multiple database types
- π³ Docker integration for isolated testing environments
- β‘ Fast and efficient test execution
- π§ Highly configurable
pytest-databases
uses the Docker Python SDK to manage the startup and shutdown of database services in containers. The following databases are currently available:
- Postgres: Version 12, 13, 14, 15, 16 and 17 are available
- MySQL: Version 5.6, 5.7 and 8 are available
- Oracle: Version 18c XE and 23C Free are available
- SQL Server: Version 2022 is available
- Google AlloyDB Omni: Simplified Omni installation for easy testing.
- Google Spanner: The latest cloud-emulator from Google is available
- Google BigQuery: Unofficial BigQuery emulator
- CockroachDB: Version latest is available
- Redis: Latest version
- Valkey: Latest version
- Dragonfly: Latest version
- KeyDB: Latest version
- Elasticsearch: Version 7 and 8 are available
- Azure blob storage: Via azurite
- Minio: Latest version
Quick install for postgres:
pip install pytest-databases[postgres]
- Add to your pytest
conftest.py
:
pytest_plugins = ["pytest_databases.docker.postgres"]
- Use in your tests:
from pytest_databases.docker.postgres import PostgresService
import psycopg
def test_one(postgres_service: PostgresService) -> None:
with psycopg.connect(
f"postgresql://{postgres_service.user}:{postgres_service.password}@{postgres_service.host}:{postgres_service.port}/{postgres_service.database}",
autocommit=True,
) as conn:
result = conn.execute("SELECT 1")
assert result
Full documentation is available at https://pytest-databases.readthedocs.io/
Contributions are welcome! Please read our Contributing Guide for details on our code of conduct and the process for submitting pull requests.
This project is licensed under the MIT License - see the LICENSE file for details.
- The Litestar Framework team
- The pytest community
Project | Status | |
---|---|---|
CI/CD | ||
Quality | ||
Package | ||
Community | ||
Meta |