Oven logo

Oven

Published

Python library for throwaway instances of anything that can run in a Docker container

Poetry Ruff PyPI - Version PyPI - License PyPI - Python Version codecov Core Tests Community Tests Docs

Codespace

Testcontainers Python

testcontainers-python facilitates the use of Docker containers for functional and integration testing.

For more information, see the docs.

Getting Started

>>> from testcontainers.postgres import PostgresContainer
>>> import sqlalchemy

>>> with PostgresContainer("postgres:16") as postgres:
...     engine = sqlalchemy.create_engine(postgres.get_connection_url())
...     with engine.begin() as connection:
...         result = connection.execute(sqlalchemy.text("select version()"))
...         version, = result.fetchone()
>>> version
'PostgreSQL 16...'

The snippet above will spin up a postgres database in a container. The get_connection_url() convenience method returns a sqlalchemy compatible url we use to connect to the database and retrieve the database version.

Contributing / Development / Release

See CONTRIBUTING.md for more details.

Configuration

Env VariableExampleDescription
TESTCONTAINERS_DOCKER_SOCKET_OVERRIDE/var/run/docker.sockPath to Docker's socket used by ryuk
TESTCONTAINERS_RYUK_PRIVILEGEDfalseRun ryuk as a privileged container
TESTCONTAINERS_RYUK_DISABLEDfalseDisable ryuk
RYUK_CONTAINER_IMAGEtestcontainers/ryuk:0.8.1Custom image for ryuk
RYUK_RECONNECTION_TIMEOUT10sReconnection timeout for Ryuk TCP socket before Ryuk reaps all dangling containers