diff options
author | Michael Foord <michael@voidspace.org.uk> | 2012-06-10 20:36:32 +0100 |
---|---|---|
committer | Michael Foord <michael@voidspace.org.uk> | 2012-06-10 20:36:32 +0100 |
commit | f7c41580578fdae4f8ab6c8eb6135902de5214d1 (patch) | |
tree | 8528e1d98410b12e7f8f0dd7aaad3f9c6f4404c4 /Lib/unittest/mock.py | |
parent | bfcb42936bc53ff094d93db01a4fc9b78735f955 (diff) | |
download | cpython-git-f7c41580578fdae4f8ab6c8eb6135902de5214d1.tar.gz |
Adding patch.stopall method to unittest.mock
Diffstat (limited to 'Lib/unittest/mock.py')
-rw-r--r-- | Lib/unittest/mock.py | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/Lib/unittest/mock.py b/Lib/unittest/mock.py index 4ae3d16139..95570aa3a9 100644 --- a/Lib/unittest/mock.py +++ b/Lib/unittest/mock.py @@ -1002,6 +1002,7 @@ def _is_started(patcher): class _patch(object): attribute_name = None + _active_patches = set() def __init__( self, getter, attribute, new, spec, create, @@ -1270,8 +1271,18 @@ class _patch(object): if _is_started(patcher): patcher.__exit__(*exc_info) - start = __enter__ - stop = __exit__ + + def start(self): + """Activate a patch, returning any created mock.""" + result = self.__enter__() + self._active_patches.add(self) + return result + + + def stop(self): + """Stop an active patch.""" + self._active_patches.discard(self) + return self.__exit__() @@ -1562,9 +1573,16 @@ def _clear_dict(in_dict): del in_dict[key] +def _patch_stopall(): + """Stop all active patches.""" + for patch in list(_patch._active_patches): + patch.stop() + + patch.object = _patch_object patch.dict = _patch_dict patch.multiple = _patch_multiple +patch.stopall = _patch_stopall patch.TEST_PREFIX = 'test' magic_methods = ( |