mirror of https://github.com/python/cpython
bpo-39915: Ensure await_args_list is updated according to the order in which coroutines were awaited (GH-18924)
Create call objects with awaited arguments instead of using call_args which has only last call value.
This commit is contained in:
parent
fde44ae6d0
commit
e553f204bf
|
@ -2171,7 +2171,7 @@ class AsyncMockMixin(Base):
|
|||
# This is nearly just like super(), except for special handling
|
||||
# of coroutines
|
||||
|
||||
_call = self.call_args
|
||||
_call = _Call((args, kwargs), two=True)
|
||||
self.await_count += 1
|
||||
self.await_args = _call
|
||||
self.await_args_list.append(_call)
|
||||
|
|
|
@ -500,6 +500,17 @@ class AsyncArguments(IsolatedAsyncioTestCase):
|
|||
mock.assert_awaited()
|
||||
self.assertTrue(ran)
|
||||
|
||||
async def test_await_args_list_order(self):
|
||||
async_mock = AsyncMock()
|
||||
mock2 = async_mock(2)
|
||||
mock1 = async_mock(1)
|
||||
await mock1
|
||||
await mock2
|
||||
async_mock.assert_has_awaits([call(1), call(2)])
|
||||
self.assertEqual(async_mock.await_args_list, [call(1), call(2)])
|
||||
self.assertEqual(async_mock.call_args_list, [call(2), call(1)])
|
||||
|
||||
|
||||
class AsyncMagicMethods(unittest.TestCase):
|
||||
def test_async_magic_methods_return_async_mocks(self):
|
||||
m_mock = MagicMock()
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
Ensure :attr:`unittest.mock.AsyncMock.await_args_list` has call objects in
|
||||
the order of awaited arguments instead of using
|
||||
:attr:`unittest.mock.Mock.call_args` which has the last value of the call.
|
||||
Patch by Karthikeyan Singaravelan.
|
Loading…
Reference in New Issue