[Async-sig] async testing question

Chris Jerdonek chris.jerdonek at gmail.com
Sat Jul 1 06:11:07 EDT 2017


I have a question about testing async code.

Say I have a coroutine:

    async def do_things():
        await do_something()
        await do_more()
        await do_even_more()

And future:

    task = ensure_future(do_things())

Is there a way to write a test case to check that task.cancel() would
behave correctly if, say, do_things() is waiting at the line
do_more()?

In real life, this situation can happen if a function like the
following is called, and an exception happens in one of the given
tasks.  One of the tasks in the "pending" list could be at the line
do_more().

    done, pending = await asyncio.wait(tasks,
                         return_when=asyncio.FIRST_EXCEPTION)

But in a testing situation, you don't necessarily have control over
where each task ends up when FIRST_EXCEPTION occurs.

Thanks,
--Chris


More information about the Async-sig mailing list