Test plugins¶
Testing the behavior of an Inmanta plugin can be done by using the project
fixture, which is part of the pytest-inmanta
package. This fixture provides functionality to call a plugin directly from a pytest test case.
Install the pytest-inmanta package¶
The pytest-inmanta
package can be installed via pip:
pip install pytest-inmanta
Writing a test case¶
Take the following plugin as an example:
1 2 3 4 5 6 7 8 9 10 | # <module-name>/plugins/__init__.py
from inmanta.plugins import plugin
@plugin
def hostname(fqdn: "string") -> "string":
"""
Return the hostname part of the fqdn
"""
return fqdn.split(".")[0]
|
A test case, to test this plugin looks like this:
1 2 3 4 5 6 | # <module-name>/tests/test_hostname.py
def test_hostname(project):
host = "test"
fqdn = f"{host}.something.com"
assert project.get_plugin_function("hostname")(fqdn) == host
|
Line 3: Creates a pytest test case, which requires the
project
fixture.Line 6: Calls the function
project.get_plugin_function(plugin_name: str): FunctionType
, which returns the plugin function namedplugin_name
. As such, this line tests whetherhost
is returned when the plugin functionhostname
is called with the parameterfqdn
.
For more information see: pytest-inmanta