[Python-Dev] isolating import state during tests

Eric Snow ericsnowcurrently at gmail.com
Sun Apr 22 03:02:17 CEST 2012


It looks like the test suite accommodates a stable import state to
some extent, but would it be worth having a PEP-405-esque context
manager to help with this? For example, something along these lines:
class ImportState:
 # sys.modules is part of the interpreter state, so
 # repopulate (don't replace)
 def __enter__(self):
 self.path = sys.path[:]
 self.modules = sys.modules.copy()
 self.meta_path = sys.meta_path[:]
 self.path_hooks = sys.path_hooks[:]
 self.path_importer_cache = sys.path_importer_cache.copy()
 sys.path = site.getsitepackages()
 sys.modules.clear()
 sys.meta_path = []
 sys.path_hooks = []
 sys.path_importer_cache = {}
 def __exit__(self, *args, **kwargs):
 sys.path = self.path
 sys.modules.clear()
 sys.modules.update(self.modules)
 sys.meta_path = self.meta_path
 sys.path_hooks = self.path_hooks
 sys.path_importer_cache = self.path_importer_cache
# in some unit test:
with ImportState():
 ... # tests
-eric


More information about the Python-Dev mailing list

AltStyle によって変換されたページ (->オリジナル) /