Skip to main content

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

pydocks-1.3.0.tar.gz (76.4 kB view details)

Uploaded Source

Built Distribution

pydocks-1.3.0-py3-none-any.whl (10.0 kB view details)

Uploaded Python 3

File details

Details for the file pydocks-1.3.0.tar.gz.

File metadata

  • Download URL: pydocks-1.3.0.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

Hashes for pydocks-1.3.0.tar.gz
Algorithm Hash digest
SHA256 5ef10b131b6511303cbb2eb52084eb98c7b7f5f0cf7fd281231b05877fc6ca9a
MD5 ebeb0eecc0d7d5159a93866b03d3faf0
BLAKE2b-256 bb3d47b4dbf23229f8753ec837ffa2e871874428f7d9f1c4a87b3affba68b797

See more details on using hashes here.

File details

Details for the file pydocks-1.3.0-py3-none-any.whl.

File metadata

  • Download URL: pydocks-1.3.0-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

Hashes for pydocks-1.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 480c2f924c2632214e35920cfc0d9f0ea02d9c6292350a8c6e1d385f1e7168ff
MD5 e82cc18b14dbd53eff8ccc9770ffbc95
BLAKE2b-256 ae40014df93b1e43459fecbba268b41ba6d58889b6bf7103a092b8614f3a4982

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page