5.2.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.

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.