This package sports a collection of helpers for unit-testing Juju charms.
In particular, it extends systemfixtures by faking out hook tools processes (config-get, juju-log, etc), so authors have a complete suite of fakes for the typical "boundaries" of a Juju charm.
>>> from testtools.matchers import DirExists
>>>
>>> from charmtest import CharmTest
>>>
>>> from charmhelpers.core import hookenv
>>>
>>>
>>> def example_charm_logic():
... return {
... "service-name": hookenv.service_name(),
... "local-unit": hookenv.local_unit(),
... "charm-dir": hookenv.charm_dir(),
... }
>>>
>>>
>>> class ExampleCharmTest(CharmTest):
...
... def test_charm_logic(self):
... result = example_charm_logic()
... self.assertEqual("test", result["service-name"])
... self.assertEqual("test/0", result["local-unit"])
... self.assertThat(result["charm-dir"], DirExists())
>>>
>>>
>>> ExampleCharmTest(methodName="test_charm_logic").run().wasSuccessful()
True
See the online documentation for a complete reference.
See the GitHub project. Bugs can be filed in the issues tracker.