I'm trying to write a way of testing some XML files. The XML files describe input into a scientific analysis program where various parameters can be defined. I want to write unittests for my XML files so I know that the program is configured correctly.
I'm currently doing this as a library with a base test class containing various tests and some mixins for subcomponents. But the subcomponents are repeated a number of times so I want the tests to run once for each mixin e.g.:
class BaseTest(object): xmlfile = '...' ... class ComponentMixin(object): xmlid = None # var = None # def test_var(self): assert self.var == "whatever_the_value_is_in self.xmlfile" # ... and a number of other tests and variables. ... now for each analysis there can be a number of components defined with different parameters. I'm hoping to do something like this --
class MyFirstComponentMixin(ComponentMixin): xmlid = 'component1' var = 'one' class MySecondComponentMixin(ComponentMixin): xmlid = 'component2' var = 'two' class MyTest(BaseTest, MyFirstComponentMixin, MySecondComponentMixin, unittest.TestCase): xmlfile = '...' ... but the problem is that test_var will only be called for component2 and not component2. Is there a way around this, or a better solution?