Docker-based integration tests
Project description
Description
Simple py.test fixtures for writing integration tests based on Docker containers. Specify all containers you need and pytest-docker will use Docker Compose to spin them up for the duration of your test suite.
Usage
Here is the basic recipe for writing a test that depends on a service that responds over HTTP:
import pytest import requests from requests.exceptions import ( ConnectionError, ) def is_responsive(url): """Check if something responds to ``url``.""" try: response = requests.get(url) if response.status_code == 200: return True except ConnectionError: return False @pytest.fixture(scope='session') def some_http_service(docker_ip, docker_services): """Ensure that "some service" is up and responsive.""" url = 'http://' % ( docker_ip, docker_services.port_for('abc', 123), ) docker_services.wait_until_responsive( timeout=30.0, pause=0.1, check=lambda: is_responsive(url) ) return url def test_something(some_service): """Sample test.""" response = requests.get(some_service) response.raise_for_status()
By default this plugin will try to open docker-compose.yml in your tests directory. If you need to use a custom location, override the docker_compose_file fixture inside your conftest.py file:
import pytest @pytest.fixture(scope='session') def docker_compose_file(pytestconfig): return os.path.join( str(pytestconfig.rootdir), 'mycustomdir' 'docker-compose.yml' )
You can allow this plugin to run your tests when Docker is not available. It will use the container port and localhost instead:
@pytest.fixture(scope='session') def docker_allow_fallback(): return True
Changelog
Version 0.3.0
Added --build option to docker-compose up command to automatically rebuild local containers.
Contributing
This py.test plug-in and its source code are made available to your under and MIT license. It is safe to use in commercial and closed-source applications. Read the license for details!
Found a bug? Think a new feature would make this plug-in more practical? No one is paid to support this software, but we welcome pull requests!
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 pytest_docker-0.5.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | de15d8628b0375d0bb5a40894a83730c7d8590fb367a49f90732cc53f961f8f8 |
|
MD5 | d8dfc07884a6ac603864a2cd821e4e05 |
|
BLAKE2b-256 | d286a48f442acc8c5e6435417f00d2191c7efab1e99cb7fcd7b8f04675ac204e |
Hashes for pytest_docker-0.5.0-py2-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 66d0d98a3229d95466453e2db730de2f159f3efeba1fd012f8d58707e69ffc49 |
|
MD5 | 50ebc2c6eb52f730a2295199ae03682f |
|
BLAKE2b-256 | 8fe0057d0f0f59d768fd086c5ae1290c05f5dda41579d640663e6bc833bcc25b |