testcontainers/testcontainers-python
testcontainers/testcontainers-python has 2,318 GitHub stars and 393 forks. GitHot measured 0 stars in 24 hours, -2 in 7 days, and 0 in 15 days. Last checked 2026-11-07 03:49 UTC. Last push 2026-10-09.
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.
Measured star growth
- in 24h
- 0
- in 7 days
- -2
- in 15 days
- 0
- in 1 month
- Update delayed
Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.
README.md
OriginalTestcontainers 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 Variable | Example | Description |
|---|---|---|
TESTCONTAINERS_DOCKER_SOCKET_OVERRIDE |
/var/run/docker.sock |
Path to Docker's socket used by ryuk |
TESTCONTAINERS_RYUK_PRIVILEGED |
false |
Run ryuk as a privileged container |
TESTCONTAINERS_RYUK_DISABLED |
false |
Disable ryuk |
RYUK_CONTAINER_IMAGE |
testcontainers/ryuk:0.8.1 |
Custom image for ryuk |
RYUK_RECONNECTION_TIMEOUT |
10s |
Reconnection 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"
Explore related projects
Asabeneh/30-Days-Of-Python
The 30 Days of Python programming challenge is a step-by-step guide to learn the Python programming language in 30 days. This challenge may take more than 100 days. Follow your own pace. These videos may help too: https://www.youtube.com/channel/UC7PNRuno1rzYPb1xLa4yktw
78,303 starsgrafana/grafana
The open and composable observability and data visualization platform. Visualize metrics, logs, and traces from multiple sources like Prometheus, Loki, Elasticsearch, InfluxDB, Postgres and many more.
77,725 starsredis/redis
For developers, who are building real-time data-driven applications, Redis is the preferred, fastest, and most feature-rich cache, data structure server, and document and vector query engine.
77,268 starsapache/superset
Apache Superset is a Data Visualization and Data Exploration Platform
75,439 stars