What? Why? Next?

Why Not?

In the Python 3.8 (release note) and newer consider to use the unittest.IsolatedAsyncioTestCase. Builtin unittest module is now asyncio-featured.


This module is a set of helpers to write simple and clean test for asyncio-based code.


Actually this is not nothing new, it just wraps current test approach in the handy utils. There are couple libraries that try to solve this problem. This one:

  • integrates nicely with standard unittest library,
  • is as simple as possible, without a bunch of stuff that is straithforward with unittest (eg re-inveting assertRaises with assertAsyncRaises),
  • supports both Python 3.5+ syntax and Python 3.4,
  • it’s well-documented (I think)

Among the others similar modules the best known is an extension pytest-asyncio. It provides couple extra features, but it cannot be used with unittest.TestCase (it does not support fixture injection).

Further reading: