[Python-Dev] test___all__ polluting sys.modules?

Stefan Krah stefan at bytereef.org
Sun Dec 30 14:54:20 CET 2012


Eli Bendersky <eliben at gmail.com> wrote:
> Yes, this is the solution currently used in test_xml_etree. However, once
> pickling tests are added things stop working. Pickle uses __import__ to import
> the module a class belongs to, bypassing all such trickery. So if test___all__
> got _elementtree into sys.modules, pickle's __import__ finds it even if all the
> tests in test_xml_etree manage to ignore it for the Python version because they
> use import_fresh_module.

I ran into the same problem for test_decimal. The only thing that appears
to work is to set sys.modules['decimal'] explicitly before calling
dumps()/loads(). See:

   PythonAPItests.test_pickle()
   ContextAPItests.test_pickle()


test_decimal ruthlessly switches sys.modules['decimal'] many times. At the
end of all tests there is a sanity check that asserts that the number of
changes were in fact balanced.



Stefan Krah




More information about the Python-Dev mailing list