My original concern was that libvirt+sandbox is still very new and evolving.  By allowing the 'base' class to be a configuration param, it gives tests flexibility in customizing behaviour (when needed).  OTOH, if you think your 'TestComplexSandboxes' class will be more general, and used more, then making it the default is the right thing.  Whole tests and/or specific test variants are still free to override it if they need something special.

Just so you know my thinking at the time, I made the namespace inclusive of the test module as well, so for really obscure/specific needs, it's possible to define this class inside the test module to keep it out of the way.  My thinking was this would help keep "feature-creep" and "special-case handling" out of the general code, instead it should be stuck into general sub-classes or sub-classes w/in the test module (for non-general use).