tauthon icon indicating copy to clipboard operation
tauthon copied to clipboard

Port unittests.mock package

Open naftaliharris opened this issue 8 years ago • 5 comments

naftaliharris avatar Oct 31 '16 18:10 naftaliharris

Hmm, actually there is a private backport at Lib/test/_mock_backport.py...

naftaliharris avatar Oct 31 '16 18:10 naftaliharris

...but it doesn't work very well since it's still missing inspect.signature:

>>> import test._mock_backport as mock
>>> class Foo(object): pass
...
>>> mock.MagicMock(Foo)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/naftali/repos/cpython/Lib/test/_mock_backport.py", line 1789, in __init__
    _safe_super(MagicMixin, self).__init__(*args, **kw)
  File "/Users/naftali/repos/cpython/Lib/test/_mock_backport.py", line 895, in __init__
    _spec_state, _new_name, _new_parent, **kwargs
  File "/Users/naftali/repos/cpython/Lib/test/_mock_backport.py", line 400, in __init__
    self._mock_add_spec(spec, spec_set, _spec_as_instance, _eat_self)
  File "/Users/naftali/repos/cpython/Lib/test/_mock_backport.py", line 457, in _mock_add_spec
    _spec_as_instance, _eat_self)
  File "/Users/naftali/repos/cpython/Lib/test/_mock_backport.py", line 100, in _get_signature_object
    return func, inspect.signature(sig_func)
AttributeError: 'module' object has no attribute 'signature'
>>>

naftaliharris avatar Oct 31 '16 18:10 naftaliharris

Diffing test._mock_backport and the unittest.mock in 3.5.2 shows that the 2.7 mock looks pretty good. Major substantial differences is a "visited" argument in reset_mock to prevent cycles, looks like a bugfix.

naftaliharris avatar Nov 01 '16 16:11 naftaliharris

Needs #14

naftaliharris avatar Nov 01 '16 19:11 naftaliharris

Unnecessary as this exists: https://pypi.python.org/pypi/backports.unittest_mock/1.0

adamchainz avatar Dec 10 '16 12:12 adamchainz