bpo-39082: Allow AsyncMock to correctly patch static/class methods (GH-18116)

This commit is contained in:
Matthew Kokotovich 2020-01-25 04:17:47 -06:00 committed by Chris Withers
parent d0d9fa8c5e
commit 62865f4532
3 changed files with 26 additions and 0 deletions

View file

@ -19,6 +19,15 @@ class AsyncClass:
def normal_method(self):
pass
@classmethod
async def async_class_method(cls):
pass
@staticmethod
async def async_static_method():
pass
class AwaitableClass:
def __await__(self):
yield
@ -71,6 +80,20 @@ class AsyncPatchDecoratorTest(unittest.TestCase):
test_async()
def test_is_AsyncMock_patch_staticmethod(self):
@patch.object(AsyncClass, 'async_static_method')
def test_async(mock_method):
self.assertIsInstance(mock_method, AsyncMock)
test_async()
def test_is_AsyncMock_patch_classmethod(self):
@patch.object(AsyncClass, 'async_class_method')
def test_async(mock_method):
self.assertIsInstance(mock_method, AsyncMock)
test_async()
def test_async_def_patch(self):
@patch(f"{__name__}.async_func", return_value=1)
@patch(f"{__name__}.async_func_args", return_value=2)