"Provide an easy way to perform integration testing with docker and python"
Project description
Testcompose
Testcompose - A clean and better way to test your Python containerized applications.
Testcompose provides an easy way of using docker containers for functional and integration testing. It allows for combination of more than one containers and allows for interactions with these containers from your test code without having to write extra scripts for such interactions. I.e providing a docker compose kind of functionality with the extra benefit of being able to fully control the containers from test codes.
This is inspired by the testcontainers-python project and goes further to add a few additional functionalities to improve software integration testing while allowing the engineer to control every aspect of the test.
Install testcompose using pip:
$ pip install testcompose
testcompose requires Python 3.7+.
Using a config file. See the Quickstart for other options
services:
- name: db1
image: "postgres:13"
command: ""
environment:
POSTGRES_USER: postgres
POSTGRES_DB: postgres
POSTGRES_PASSWORD: password
exposed_ports:
- 5432
volumes:
- host: "data_volume"
container: "/data"
mode: "rw"
source: "dockervolume" # possible values are `dockervolume` or `filesystem`
log_wait_parameters:
log_line_regex: "database system is ready to accept connections"
wait_timeout_ms: 30
poll_interval_ms: 2
Verify it as follows:
from testcompose.parse_config import TestConfigParser
from testcompose.configs.service_config import Config
from testcompose.run_containers import RunContainers
from testcompose.models.config.config_services import ConfigServices, Service
my_test_service: ConfigServices = TestConfigParser.parse_config(
file_name='some-file-name'
)
my_config: Config = Config(test_services=my_test_service)
with RunContainers(
services=running_config.ranked_itest_config_services
) as runner:
# Interract with the running containers
assert runner.running_containers
# Use some special parameters of the running containers
app_container = runner.running_containers["app_container_config_name"].config_environment_variables
# Get the host port a certain exposed container port is mapped to
mapped_port = app_container.generic_container.get_exposed_port("8000")
# where `port` is the exposed port of the container
Documentation
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Hashes for testcompose-0.0.12-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d4474deffa1591b18210f396a18cbf4dbe494e34e1b57418fd3da69488654dac |
|
MD5 | db22b505e78b96001d326387de6d7d6e |
|
BLAKE2b-256 | bb20e49d9f15622c3f663217bd117632a1bf416bfb2722d2ad7043dae174c059 |