[New-bugs-announce] [issue38093] Update MagicMock __aenter__ and __aexit__ to return AsyncMock's
report at bugs.python.org
Tue Sep 10 10:42:41 EDT 2019
New submission from Lisa Roach <lisaroach14 at gmail.com>:
After a discussion with Michael, xtreak, and Ezio we've decided to try to make the process of mocking an async context manager slightly easier.
Currently if you want to mock a context manager that is used like this:
async with cm(): # note that cm is called here
You need to mock cm as a MagicMock and set __aenter__ and __aexit__ return values directly because they do not exist on MagicMocks.
Our first step to making this easier is setting the calculated return value of MagicMock __aenter__ and __aexit__ to be AsyncMock, which will make it so you do not need to set them specifically.
A future improvement may be to create a ContextManagerMock directly that can take an async kwarg that would return a context manager with AsyncMocks for __aenter__ and __aexit__ automatically.
nosy: ezio.melotti, lisroach, michael.foord, xtreak
stage: needs patch
title: Update MagicMock __aenter__ and __aexit__ to return AsyncMock's
versions: Python 3.8, Python 3.9
Python tracker <report at bugs.python.org>
More information about the New-bugs-announce