https://github.com/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.
https://github.com/testcontainers/testcontainers-python
database python python3 selenium testcontainers testing
Last synced: 6 days ago
JSON representation
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.
- Host: GitHub
- URL: https://github.com/testcontainers/testcontainers-python
- Owner: testcontainers
- License: apache-2.0
- Created: 2017-03-22T08:22:35.000Z (about 8 years ago)
- Default Branch: main
- Last Pushed: 2024-10-24T15:10:07.000Z (6 months ago)
- Last Synced: 2024-10-29T14:53:07.841Z (6 months ago)
- Topics: database, python, python3, selenium, testcontainers, testing
- Language: Python
- Homepage: https://testcontainers-python.readthedocs.io/en/latest/
- Size: 1.85 MB
- Stars: 1,575
- Watchers: 17
- Forks: 286
- Open Issues: 113
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: .github/CONTRIBUTING.md
- License: LICENSE.txt
Awesome Lists containing this project
- awesome-python-tools - testcontainers-python
- awesome-python-tools - testcontainers-python
- awesome-testcontainers - Repository
- awesome-testcontainers - Repository
README
[](https://python-poetry.org/)
[](https://github.com/astral-sh/ruff)

[](https://github.com/testcontainers/testcontainers-python/blob/main/LICENSE)
[](https://pypi.python.org/pypi/testcontainers)
[](https://codecov.io/gh/testcontainers/testcontainers-python)


[](http://testcontainers-python.readthedocs.io/en/latest/?badge=latest)[](https://codespaces.new/testcontainers/testcontainers-python)
# Testcontainers Python
`testcontainers-python` facilitates the use of Docker containers for functional and integration testing.
For more information, see [the docs][readthedocs].
[readthedocs]: https://testcontainers-python.readthedocs.io/en/latest/
## Getting Started
```pycon
>>> 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](.github/CONTRIBUTING.md) for more details.
## Configuration
| 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 |