I don't understand what's happening here with METADATA.  On line 26, METADATA is a copy of self.METADATA.  On 28, self.METADATA is updated with the metadata argument.  Then here on 34, self.METADATA is set to METADATA, which was the copy we made earlier.  The net result is that the metadata argument hasn't affected anything except the call to the parent's setUp function.  Except why is init_module calling setUp anyway? setUp is invoked by the test runner.  Since this function is called by test methods, the setUp function will be called twice!

This seems very confusing.  Perhaps there's a simpler way to accomplish what you want?  At an absolute minimum, write some comments explaining what is going on, and use variable names that make sense in this context.