summaryrefslogtreecommitdiffstats
path: root/Lib/unittest
diff options
context:
space:
mode:
authorKarthikeyan Singaravelan <tir.karthi@gmail.com>2020-03-11 15:06:12 (GMT)
committerGitHub <noreply@github.com>2020-03-11 15:06:12 (GMT)
commite553f204bf0e39b1d701a364bc71b286acb9433f (patch)
tree7e7a319f0a86edec4a9d8abebf435934b0e1c829 /Lib/unittest
parentfde44ae6d08d3df79554155b1cf079e73a8fabdd (diff)
downloadcpython-e553f204bf0e39b1d701a364bc71b286acb9433f.zip
cpython-e553f204bf0e39b1d701a364bc71b286acb9433f.tar.gz
cpython-e553f204bf0e39b1d701a364bc71b286acb9433f.tar.bz2
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.
Diffstat (limited to 'Lib/unittest')
-rw-r--r--Lib/unittest/mock.py2
-rw-r--r--Lib/unittest/test/testmock/testasync.py11
2 files changed, 12 insertions, 1 deletions
diff --git a/Lib/unittest/mock.py b/Lib/unittest/mock.py
index 9e69298..20daf72 100644
--- a/Lib/unittest/mock.py
+++ b/Lib/unittest/mock.py
@@ -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)
diff --git a/Lib/unittest/test/testmock/testasync.py b/Lib/unittest/test/testmock/testasync.py
index bf93622..690ca4f 100644
--- a/Lib/unittest/test/testmock/testasync.py
+++ b/Lib/unittest/test/testmock/testasync.py
@@ -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()