((('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)
self.__dict__['_mock_await_args'] = None
self.__dict__['_mock_await_args_list'] = _CallList()
code_mock = NonCallableMock(spec_set=CodeType)
- 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()