Pytest fixures for running tests with Docker containers
Project description
PyDocks
PyDocks is a group of pytest fixures for running tests with Docker containers
Demonstration:
@pytest.mark.asyncio
async def test_postgresql_execute_command(postgresql_container):
# Connect to the PostgreSQL database
conn = await asyncpg.connect(
host="127.0.0.1",
port=5433,
user="postgres",
password="postgres",
database="postgres",
)
try:
# Execute a simple command
result = await conn.fetchval("SELECT 1")
assert result == 1, "Failed to execute command on PostgreSQL"
finally:
# Close the connection
await conn.close()
Table of Contents
Description
PyDocks is a Python library that provides a set of pytest fixtures for running tests with Docker containers. It simplifies the process of setting up, managing, and tearing down Docker containers during test execution.
Key features include:
- Easy integration with pytest
- Support for PostgreSQL, Hashicorp Vault containers, Redis
- Automatic container cleanup
- Configurable container settings
- Reusable session-scoped containers for improved test performance
PyDocks is designed to make testing with Docker containers more efficient and less error-prone, allowing developers to focus on writing tests rather than managing infrastructure.
Installation
# Install the dependency
pip install pydocks
uv add pydocks
poetry add pydocks
Usage
Remove all old containers
import pytest_asyncio
@pytest_asyncio.fixture(scope="session", loop_scope="session", autouse=True)
async def begin_clean_all_containers(postgresql_clean_all_containers):
logger.info("Begin - clean all containers")
Use a function container
@pytest.mark.asyncio
async def test_postgresql_execute_command(postgresql_container):
...
Use a session container, to keep the container to use it in multiple tests
@pytest.mark.asyncio(loop_scope="session")
async def test_reuse_postgresql_container_1_2(postgresql_container_session):
...
# postgresql_container_session creates a new container
@pytest.mark.asyncio(loop_scope="session")
async def test_reuse_postgresql_container_2_2(postgresql_container_session):
...
# postgresql_container_session uses the same instance of container created in test_reuse_postgresql_container_1_2
License
PyDocks is released under the MIT License. See the LICENSE file for more details.
Contact
For questions, suggestions, or issues related to PyDocks, please open an issue on the GitHub repository.
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
Built Distribution
File details
Details for the file pydocks-1.3.1.tar.gz
.
File metadata
- Download URL: pydocks-1.3.1.tar.gz
- Upload date:
- Size: 76.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4f239038e43390b79b8fbfa8b96ce634cfdcbca8190ad38f97b08650caf897bd |
|
MD5 | 7015eeb024820492f2c484a28a9c8911 |
|
BLAKE2b-256 | 468f91f8bfe7e632cdc65897d12f5047bea612696927046ad9f42ac1e0952bb5 |
File details
Details for the file pydocks-1.3.1-py3-none-any.whl
.
File metadata
- Download URL: pydocks-1.3.1-py3-none-any.whl
- Upload date:
- Size: 10.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a25da9983dfc30c5afc89d5c8544cf0651a53a05f80a3abc80d38ce8f205b8bd |
|
MD5 | 2263e5430dd2928b88e6b3a95a981c43 |
|
BLAKE2b-256 | 5ae8a1b8f74d71834849c3d5b147696a3edb00ea4ae4c63151c660a37ccde036 |