Skip to main content

A Pytest plugin that builds and creates docker containers

Project description

pytest-salt-containers
===================================

A Pytest plugin that makes it easy to write integration tests for salt

----

This `Pytest`_ plugin was generated with `Cookiecutter`_ along with `@hackebrot`_'s `Cookiecutter-pytest-plugin`_ template.


Installation
------------

You can install "pytest-salt-containers" via `pip`_ from `PyPI`_::

$ pip install pytest-salt-containers


Usage
-----

How to write tests and how they work
************************************

Writing a "test.ping" test

For this we need a salt master and a minion.
We can do that by creating a new file in the `tests` folder:

.. compound::

./tests/test_example.py::

def test_ping_minion(master, minion):
pass

This uses `master` and `minion` fixtures defined in `tests/conftest.py`.

_Note: The fixtures defined in `conftest.py` (or in the current file) are automatically discovered by `py.test`_

The fixtures rely on [fatory-boy](https://pypi.python.org/pypi/factory_boy/) factories defined in `tests/factories.py`.
The factories take care of running `sast-master` and `salt-minion` in separate docker containers (it is also possible to run them in the same container).

With this, we have a running salt-master and a salt-minion.

To make master accept minion, I have created a convenient fixture called `minion_key_accepted`
Let's modify the test above to use it.

.. compound::

./tests/test_example.py::

def test_ping_minion(master, minion, minion_key_accepted):
pass

To run `salt <minion-id> test.ping` on master and assert minion replied, do this:

.. compound::

./tests/test_example.py::

def test_ping_minion(master, minion, minion_key_accepted):
assert master.salt(minion['id'], "test.ping")[minion['id']] is True

This might fail sometimes because the command might be run before .
In order to avoid that, I have created a `retry` helper that raises an exception if the command was not successful within `config.TIME_LIMIT`. So we need to change the test like this:

.. compound::

./tests/test_example.py::

from utils import retry


def test_ping_minion(master, minion, minion_key_accepted):

def ping():
return master.salt(minion['id'], "test.ping")[minion['id']]

assert retry(ping)

Contributing
------------
Contributions are very welcome. Tests can be run with `tox`_, please ensure
the coverage at least stays the same before you submit a pull request.

License
-------

Distributed under the terms of the `MIT`_ license, "pytest-salt-containers" is free and open source software


Issues
------

If you encounter any problems, please `file an issue`_ along with a detailed description.

.. _`Cookiecutter`: https://github.com/audreyr/cookiecutter
.. _`@hackebrot`: https://github.com/hackebrot
.. _`MIT`: http://opensource.org/licenses/MIT
.. _`BSD-3`: http://opensource.org/licenses/BSD-3-Clause
.. _`GNU GPL v3.0`: http://www.gnu.org/licenses/gpl-3.0.txt
.. _`Apache Software License 2.0`: http://www.apache.org/licenses/LICENSE-2.0
.. _`cookiecutter-pytest-plugin`: https://github.com/pytest-dev/cookiecutter-pytest-plugin
.. _`file an issue`: https://github.com/dincamihai/pytest-salt-containers/issues
.. _`pytest`: https://github.com/pytest-dev/pytest
.. _`tox`: https://tox.readthedocs.io/en/latest/
.. _`pip`: https://pypi.python.org/pypi/pip/
.. _`PyPI`: https://pypi.python.org/pypi

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pytest-salt-containers-0.2.5.tar.gz (7.0 kB view details)

Uploaded Source

File details

Details for the file pytest-salt-containers-0.2.5.tar.gz.

File metadata

File hashes

Hashes for pytest-salt-containers-0.2.5.tar.gz
Algorithm Hash digest
SHA256 f245fdac6223214d5f753c09cfd69fb9c03d3d9bc6bcdb8dd44db7102334fb93
MD5 555fe0eeab998a89299717d29456466e
BLAKE2b-256 a3f0b07161aecb85aa78e50415d765fcd134cb6fe1a142ad2295a9def14db004

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page