In my code I have a directory of small python modules that act as plugins. They can be called by a main program as directed. Each plugin, therefore, has a standard interface and needs to work with the main program. I wanted to setup an automated test that would run the main program, load each plugin in turn and run to make sure there was no crash. It turns out that
My test module for this turns out to be (with a little paraphrasing and removal of details):
Note the cool ability to set a
nose
has a very elegant way of doing this.My test module for this turns out to be (with a little paraphrasing and removal of details):
from nose.plugins.skip import SkipTest def find_plugin_models(): return a_list_of_the_modules_loaded def check_plugin(model): if an_important_precondition_is_not_met: #http://stackoverflow.com/questions/1120148/disabling-python-nosetests raise SkipTest('I can not run this test') run_a_test() assert thing_is_ok() #http://stackoverflow.com/questions/19071601/how-do-i-run-multiple-python-test-cases-in-a-loop def test_all_found_plugins(): """Integration test on automatically found mutation plugin""" for model in find_plugin_models(): check_plugin.description = 'Testing {:s} automatically'.format(model.__name__) yield check_plugin, model
Note the cool ability to set a
.description
attribute that allows you to print what you like when the test runs.
Comments
Post a Comment