Pytest Async Generators
Pytest fixtures for async generators
Usage
Invoke any async generator with await subscribe_to_messages()
and then await wait_for_messages()
to retrieve the results.
import asyncio
import pytest
from typing import AsyncGenerator, Callable
@pytest.mark.asyncio
async def test_counting(subscribe_to_messages: Callable) -> None:
async def count() -> AsyncGenerator[int, None]:
for n in range(10):
await asyncio.sleep(0.1)
yield n
subscription = await subscribe_to_messages(count())
messages = await subscription.wait_for_messages()
assert messages == [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
subscribe_to_messages()
can be passed a timeout
parameter to control how long to wait for new messages.