Keywords: lib

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