Last updated:
0 purchases
pytestdockerc 1.0.8
pytest-dockerc
pytest-dockerc is a plugin for pytest that provides support
for running test from Docker Compose project.
The docker-compose up -d command is executed at the beginning of the
test session and the docker-compose down command at the end. The main fixture dockerc
returns a compose.project.Project
to deal with the python docker API in your tests. Another fixture dockerc_logs is provided to enable
the logs on stdout during your tests execution.
This plugin provides a way to use as far as possible the same environment for development, test,
integration and production phases. You test and deploy the same artifact in order to avoid
side effects in production.
Install
pip install pytest-dockerc
Getting started
Below a basic example, you can also refer to a full example with an
http server.
worktree
├── docker-compose.yml
└── tests
├── conftest.py
└── test_example.py
docker-compose.yml
version: "3.6"
services:
python:
image: python:3-alpine
test_example.py
def test_example(dockerc):
assert len(dockerc.containers()) == 1
container = dockerc.containers()[0]
assert container.is_running is True
assert container.labels["com.docker.compose.service"] == "python"
Available options
Some options are available to update the default behavior of the plugin.
dockerc:
--dockerc-norun disable the run and stop commands of docker-compose
--dockerc-attach-network
attach the pytest container to the docker-compose
network,only if pytest is started inside a container
--dockerc-filepath=DOCKERC_FILEPATH
set the Compose file path
--dockerc-projectdir=DOCKERC_PROJECTDIR
set the working directory of the Compose project
--dockerc-projectname=DOCKERC_PROJECTNAME
set project name of the Compose project
--dockerc-build build images before starting containers
--dockerc-services=DOCKERC_SERVICES
select services to run
Run tests without up and down command of docker-compose
Running the full docker-compose project can take time, if you loads several services. It is
useful to run the test on a running instance. That method is recommended when you write a new
test.
First start your docker compose like usual:
docker-compose up
Then run your tests with the --dockerc-norun, that will skip the up and down command:
pytest --dockerc-norun
Below the docker-compose output after 2 runs of the test tests/test_fixtures::test_basic_workflow,
which performs a GET request.
Creating network "pytest-dockerc_default" with the default driver
Creating pytest-dockerc_http_1 ... done
Attaching to pytest-dockerc_http_1
http_1 | 192.168.32.1 - - [24/Dec/2018:08:48:21 +0000] "GET / HTTP/1.1" 200 612 "-" "python-requests/2.20.0" "-"
http_1 | 192.168.32.1 - - [24/Dec/2018:08:48:22 +0000] "GET / HTTP/1.1" 200 612 "-" "python-requests/2.20.0" "-"
For personal and professional use. You cannot resell or redistribute these repositories in their original state.
There are no reviews.