Skip to content

Testcontainers is a Python library that providing a friendly API to run Docker container. It is designed to create runtime environment to use during your automatic tests.

License

Notifications You must be signed in to change notification settings

testcontainers/testcontainers-python

Repository files navigation

PoetryRuffPyPI - VersionPyPI - LicensePyPI - Python VersioncodecovCore TestsCommunity TestsDocs

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

You can set environment variables to configure the library behaviour:

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

Alternatively you can set the configuration during runtime:

fromtestcontainers.coreimporttestcontainers_configtestcontainers_config.ryuk_docker_socket="/home/user/docker.sock"

About

Testcontainers is a Python library that providing a friendly API to run Docker container. It is designed to create runtime environment to use during your automatic tests.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Languages