aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/Lib/test/test_unittest/testmock/testhelpers.py
diff options
context:
space:
mode:
authorTomas R <tomas.roun8@gmail.com>2023-04-13 09:37:57 +0200
committerGitHub <noreply@github.com>2023-04-13 08:37:57 +0100
commit59e0de4903c02e72b329e505fddf1ad9794928bc (patch)
tree25631df423f943fc427f277eda233af8ccdfa87e /Lib/test/test_unittest/testmock/testhelpers.py
parent19d2639d1e6478e2e251479d842bdfa2e8272396 (diff)
downloadcpython-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.py18
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