Andrew Svetlov <andrew.svet...@gmail.com> added the comment:

1. We have an agreement that we need `asyncSetUp` and all family. I strongly 
support it. `super()` call is crucial argument I think.

2. Should async setup/teardown methods be a part of `unittest.TestCase` or we 
need a new AsyncTestCase class?

I believe adding async methods to TestCase makes no sense: without instructions 
how to run async code these methods are pretty useless and error-prone. 
Implementation of async startup/teardown without providing async runner (read 
about a runner below) looks like a error. If we mix everything into TestCase we 
should support virtually both modes in the single TestCase class: one for 
sync-only test case and other for async tests with async setup/teardown.

3. The next question is: should we support *every not existing yet* async 
framework by our tools or asyncio-compatible only. 
*Not existing yet* means we have no idea how to create a test loop, prepare it, 
run a test by loop, tear down everything.
Sure, we can invite a `async function runner` concept but I request a PEP for 
such significant addition with full specification.

Zachary Ware proposed `coroutine_runner` property in `TestCase`.
What is `coroutine_runner`? How should it work? How to run a coroutine? 
Subscribe for a UNIX signal or spawn a subprocess (asyncio has many tricks for 
signal/subprocess support, pretty sure they are not compatible with curio/trio 
approach)? Should we expose unified timer/socket/file API?
Is it ok that correct asyncio code will fail or even hang if `coroutine_runner` 
is not compatible with asyncio? If no -- that is benefit of *unified runner* if 
we need to use concrete runner family for writing tests?

In case of limiting build-in `AsyncioTestCase` to asyncio only we narrow down 
to very well defined asyncio API. Tornado and Twisted declared asyncio 
compatibility, they should work with the test case class.

curio/trio explicitly declared incompatibility with asyncio. That's fine, we 
should not support them by standard unittest classes too because we have no way 
to write tests for non-specified-yet contracts.

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue32972>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to