diff options
author | Tomas R <tomas.roun8@gmail.com> | 2023-04-13 09:37:57 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-04-13 08:37:57 +0100 |
commit | 59e0de4903c02e72b329e505fddf1ad9794928bc (patch) | |
tree | 25631df423f943fc427f277eda233af8ccdfa87e /Lib/test/test_unittest/testmock/testhelpers.py | |
parent | 19d2639d1e6478e2e251479d842bdfa2e8272396 (diff) | |
download | cpython-59e0de4903c02e72b329e505fddf1ad9794928bc.tar.gz cpython-59e0de4903c02e72b329e505fddf1ad9794928bc.zip |
gh-102978: Fix mock.patch function signatures for class and staticmethod decorators (#103228)
Fixes unittest.mock.patch not enforcing function signatures for methods
decorated with @classmethod or @staticmethod when patch is called with
autospec=True.
Diffstat (limited to 'Lib/test/test_unittest/testmock/testhelpers.py')
-rw-r--r-- | Lib/test/test_unittest/testmock/testhelpers.py | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/Lib/test/test_unittest/testmock/testhelpers.py b/Lib/test/test_unittest/testmock/testhelpers.py index dc4d004cda8..74785a83757 100644 --- a/Lib/test/test_unittest/testmock/testhelpers.py +++ b/Lib/test/test_unittest/testmock/testhelpers.py @@ -952,6 +952,24 @@ class SpecSignatureTest(unittest.TestCase): self.assertFalse(hasattr(autospec, '__name__')) + def test_autospec_signature_staticmethod(self): + class Foo: + @staticmethod + def static_method(a, b=10, *, c): pass + + mock = create_autospec(Foo.__dict__['static_method']) + self.assertEqual(inspect.signature(Foo.static_method), inspect.signature(mock)) + + + def test_autospec_signature_classmethod(self): + class Foo: + @classmethod + def class_method(cls, a, b=10, *, c): pass + + mock = create_autospec(Foo.__dict__['class_method']) + self.assertEqual(inspect.signature(Foo.class_method), inspect.signature(mock)) + + def test_spec_inspect_signature(self): def myfunc(x, y): pass |