5.1.3 What's the Execution Context?

By default, each time testmod finds a docstring to test, it uses a copy of M's globals, so that running tests on a module doesn't change the module's real globals, and so that one test in M can't leave behind crumbs that accidentally allow another test to work. This means examples can freely use any names defined at top-level in M, and names defined earlier in the docstring being run. It also means that sloppy imports (see below) can cause examples in external docstrings to use globals inappropriate for them.

You can force use of your own dict as the execution context by passing globs=your_dict to testmod() instead. Presumably this would be a copy of M.__dict__ merged with the globals from other imported modules.

See About this document... for information on suggesting changes.