[Python-Dev] test___all__ polluting sys.modules? (original) (raw)

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 testxmletree. 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 testxmletree manage to ignore it for the Python version because they use importfreshmodule.

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