Skip to content

async_stub doesn't need to be awaited #374

@AstraLuma

Description

@AstraLuma

(event_loop from pytest-asyncio)

async def test_demo(event_loop, mocker):
    callee = mocker.async_stub('callee')

    event_loop.call_soon_threadsafe(callee)  # Wrong!

    await asyncio.sleep(0)

    assert callee.called == 1

Expected behavior: callee.called should be zero

Actual behavior: callee.called is one, and a warning is produced:

tests/test_basics.py::test_demo
  /usr/lib64/python3.11/asyncio/events.py:80: RuntimeWarning: coroutine 'AsyncMockMixin._execute_mock_call' was never awaited
    self._context.run(self._callback, *self._args)
  Enable tracemalloc to get traceback where the object was allocated.
  See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info.

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html

I'm calling this behavior incorrect (or at least unhelpful) because if I were to use a real coroutine instead of async_stub(), the body never would have executed.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions