mirror of
https://github.com/python/cpython.git
synced 2025-12-15 21:44:50 +00:00
gh-96127: Fix inspect.signature call on mocks (#96335)
This commit is contained in:
parent
a109454e82
commit
9e7d7266ec
3 changed files with 30 additions and 1 deletions
|
|
@ -3283,6 +3283,25 @@ class TestSignatureObject(unittest.TestCase):
|
|||
((('a', 10, ..., "positional_or_keyword"),),
|
||||
...))
|
||||
|
||||
def test_signature_on_mocks(self):
|
||||
# https://github.com/python/cpython/issues/96127
|
||||
for mock in (
|
||||
unittest.mock.Mock(),
|
||||
unittest.mock.AsyncMock(),
|
||||
unittest.mock.MagicMock(),
|
||||
):
|
||||
with self.subTest(mock=mock):
|
||||
self.assertEqual(str(inspect.signature(mock)), '(*args, **kwargs)')
|
||||
|
||||
def test_signature_on_noncallable_mocks(self):
|
||||
for mock in (
|
||||
unittest.mock.NonCallableMock(),
|
||||
unittest.mock.NonCallableMagicMock(),
|
||||
):
|
||||
with self.subTest(mock=mock):
|
||||
with self.assertRaises(TypeError):
|
||||
inspect.signature(mock)
|
||||
|
||||
def test_signature_equality(self):
|
||||
def foo(a, *, b:int) -> float: pass
|
||||
self.assertFalse(inspect.signature(foo) == 42)
|
||||
|
|
|
|||
|
|
@ -2217,7 +2217,15 @@ class AsyncMockMixin(Base):
|
|||
code_mock = NonCallableMock(spec_set=_CODE_ATTRS)
|
||||
code_mock.__dict__["_spec_class"] = CodeType
|
||||
code_mock.__dict__["_spec_signature"] = _CODE_SIG
|
||||
code_mock.co_flags = inspect.CO_COROUTINE
|
||||
code_mock.co_flags = (
|
||||
inspect.CO_COROUTINE
|
||||
+ inspect.CO_VARARGS
|
||||
+ inspect.CO_VARKEYWORDS
|
||||
)
|
||||
code_mock.co_argcount = 0
|
||||
code_mock.co_varnames = ('args', 'kwargs')
|
||||
code_mock.co_posonlyargcount = 0
|
||||
code_mock.co_kwonlyargcount = 0
|
||||
self.__dict__['__code__'] = code_mock
|
||||
self.__dict__['__name__'] = 'AsyncMock'
|
||||
self.__dict__['__defaults__'] = tuple()
|
||||
|
|
|
|||
|
|
@ -0,0 +1,2 @@
|
|||
``inspect.signature`` was raising ``TypeError`` on call with mock objects.
|
||||
Now it correctly returns ``(*args, **kwargs)`` as infered signature.
|
||||
Loading…
Add table
Add a link
Reference in a new issue