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.