Let unittest frameworks deal with async functions
Instead of trying to handle unittest-async functions in pytest_pyfunc_call, let the unittest framework handle them instead. This lets us remove the hack in pytest_pyfunc_call, with the upside that we should support any unittest-async based framework. Also included 'asynctest' as test dependency for py37-twisted, and renamed 'twisted' to 'unittestextras' to better reflect that we install 'twisted' and 'asynctest' now. This also fixes the problem of cleanUp functions not being properly called for async functions. Fix #7110 Fix #6924
This commit is contained in:
@@ -1,7 +1,13 @@
|
||||
from unittest import IsolatedAsyncioTestCase # type: ignore
|
||||
|
||||
|
||||
teardowns = []
|
||||
|
||||
|
||||
class AsyncArguments(IsolatedAsyncioTestCase):
|
||||
async def asyncTearDown(self):
|
||||
teardowns.append(None)
|
||||
|
||||
async def test_something_async(self):
|
||||
async def addition(x, y):
|
||||
return x + y
|
||||
@@ -13,3 +19,6 @@ class AsyncArguments(IsolatedAsyncioTestCase):
|
||||
return x + y
|
||||
|
||||
self.assertEqual(await addition(2, 2), 3)
|
||||
|
||||
def test_teardowns(self):
|
||||
assert len(teardowns) == 2
|
||||
|
||||
22
testing/example_scripts/unittest/test_unittest_asynctest.py
Normal file
22
testing/example_scripts/unittest/test_unittest_asynctest.py
Normal file
@@ -0,0 +1,22 @@
|
||||
"""Issue #7110"""
|
||||
import asyncio
|
||||
|
||||
import asynctest
|
||||
|
||||
|
||||
teardowns = []
|
||||
|
||||
|
||||
class Test(asynctest.TestCase):
|
||||
async def tearDown(self):
|
||||
teardowns.append(None)
|
||||
|
||||
async def test_error(self):
|
||||
await asyncio.sleep(0)
|
||||
self.fail("failing on purpose")
|
||||
|
||||
async def test_ok(self):
|
||||
await asyncio.sleep(0)
|
||||
|
||||
def test_teardowns(self):
|
||||
assert len(teardowns) == 2
|
||||
Reference in New Issue
Block a user