https://github.com/sylvainmouquet/pydocks
Pytest fixures for running tests with Docker containers
https://github.com/sylvainmouquet/pydocks
containers docker postgresql pytest tests vault
Last synced: about 1 year ago
JSON representation
Pytest fixures for running tests with Docker containers
- Host: GitHub
- URL: https://github.com/sylvainmouquet/pydocks
- Owner: sylvainmouquet
- License: mit
- Created: 2024-09-25T19:19:06.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2024-12-20T07:09:14.000Z (over 1 year ago)
- Last Synced: 2024-12-22T20:03:20.046Z (over 1 year ago)
- Topics: containers, docker, postgresql, pytest, tests, vault
- Language: Python
- Homepage: https://pypi.org/project/pydocks
- Size: 502 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# PyDocks
PyDocks is a group of pytest fixures for running tests with Docker containers
### Demonstration:
```python
import pytest
import asyncpg
@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
- [PyDocks](#PyDocks)
- [Table of Contents](#table-of-contents)
- [Description](#description)
- [Installation](#installation)
- [Usage](#usage)
- [License](#license)
- [Contact](#contact)
## 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
```bash
# Install the dependency
pip install pydocks
uv add pydocks
poetry add pydocks
```
## Usage
### Remove all old containers
```python
import pytest
import pytest_asyncio
from loguru import logger
@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
```python
import pytest
@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
```python
import pytest
@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](LICENSE) file for more details.
## Contact
For questions, suggestions, or issues related to PyDocks, please open an issue on the GitHub repository.