skip to navigation
skip to content

pytest-consul 0.1.0

pytest plugin with fixtures for testing consul aware apps


pytest-consul is a pytest plugin meant for being able to do integration and
unit testing against [Hashicorp's Consul](

This plugin is heavily influenced by the design of


$ pip install pytest-consul


When pytest-consul is installed, the fixtures available will ensure that an
actual local consul agent in bootstrap mode is running. The fixture object
contains a dictionary containing each of the exposed consul ports by name.

The `consul` fixture is session scoped. All tests using it will share catalog
and kv state.

def test_consul_thing(consul):
http_port = consul['http']
my_app.register_consul(('localhost', http_port))
resp = requests.get('http://localhost:{port}/v1/key/my-test-key'.format(
actual_value = base64.b64decode(resp.json()[0]['Value'])
assert actual_value == 'my-expected-value'

The `consul_clean` fixture is function scoped. If you want a clean consul state
for a given test, this fixture will provide it.


The consul agent takes a second or two to start up, even in bootstrap mode.
This makes these fixtures better for integration style tests, rather than unit
tests. Using the function scope `consul_clean` in particular is going to add
that additional latency to every single test which uses it. The flip side of
this is that using the session scope `consul` will not give you test isolation;
if your tests leave values in the kv store or catalog, it may affect any tests
that run after them.


pytest-consul adds the option `--consul-binary` to py.test, allowing you to
utilize a specific consul binary. By default, it will pick the first `consul`
available in the PATH.  
File Type Py Version Uploaded on Size
pytest-consul-0.1.0.tar.gz (md5) Source 2017-03-01 4KB
pytest_consul-0.1.0-py2.py3-none-any.whl (md5) Python Wheel py2.py3 2017-03-01 7KB