Hi everyone and good morning to some of you,
Since asyncio and the async/await syntax are both part of Python, I think that we should extend TestCase to support it. The simplest solution that I can think of is to create unittest.AsyncTestCase sub-class with the following extensions:
- create a new event loop and install it in AsyncTestCase.run - make it possible for setUp, tearDown, and test methods to be async by calling asyncio.iscoroutinefunction
I wrote my own in a local test before noticing that Martin Richard had already written and published asynctest [1]. Since then I found the following projects as well:
- https://github.com/kwarunek/aiounittest https://github.com/kwarunek/aiounittest - https://github.com/pytest-dev/pytest-asyncio https://github.com/pytest-dev/pytest-asyncio
I think that the community as a whole would benefit from basic support in unittest for async/await test "user methods". I am personally fond of the approach of extending unittest.TestCase in asynctest [2] over some of the other approaches.
Is this something that we want in our Standard Library?
- dave -- [1]: https://github.com/Martiusweb/asynctest https://github.com/Martiusweb/asynctest [2]: https://github.com/Martiusweb/asynctest/blob/master/asynctest/case.py https://github.com/Martiusweb/asynctest/blob/master/asynctest/case.py