testcontainers/testcontainers-python

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.

Python

2,313

1,002 commits

updated Oct 9, 2026

See the code

README

uv 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

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:

from testcontainers.core import testcontainers_config

testcontainers_config.ryuk_docker_socket = "/home/user/docker.sock"
database
python
python3
selenium
testcontainers
testing

Project health

Overall

5.7/10

Maintained

10/10

Code review

10/10
OpenSSF Scorecard

Latest release

4.15.0 · Jul 24, 2026

Releases this year

5

Significant stargazers

(top 24 of 34)

Tony Narlock

421 followers · starred Mar 2026

Marcelo Trylesinski

3,317 followers · starred Aug 2024

Berker Peksag

955 followers · starred Mar 2024

Nicolò Boschi

376 followers · starred Sep 2023

testcontainers/testcontainers-python

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.

Python

2,313

1,002 commits

updated Oct 9, 2026

See the code

README

uv 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

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:

from testcontainers.core import testcontainers_config

testcontainers_config.ryuk_docker_socket = "/home/user/docker.sock"
database
python
python3
selenium
testcontainers
testing

Project health

Overall

5.7/10

Maintained

10/10

Code review

10/10
OpenSSF Scorecard

Latest release

4.15.0 · Jul 24, 2026

Releases this year

5

Significant stargazers

(top 24 of 34)

Tony Narlock

421 followers · starred Mar 2026

Marcelo Trylesinski

3,317 followers · starred Aug 2024

Berker Peksag

955 followers · starred Mar 2024

Nicolò Boschi

376 followers · starred Sep 2023