В рамках моего цикла мне нужно повторно инициализировать набор тестов следующим образом: :
Код: Выделить всё
tests = get_tests()
suite = unittest.TestSuite(tests)
runner = unittest.TextTestRunner()
for _ in range(3):
result = runner.run(suite)
unittest.registerResult(result)
suite = unittest.TestSuite(tests)
Код: Выделить всё
async def basic_async_func():
await asyncio.sleep(2)
return 'hello'
class MyAsyncTestClass(unittest.IsolatedAsyncioTestCase):
@classmethod
def setUpClass(cls):
cls.name = 'foo'
# Handling async class set up
asyncio.run(cls.asyncSetUpClass())
@classmethod
async def asyncSetUpClass(cls):
cls.statement = await basic_async_func()
def test_set_up(self):
self.assertEqual(self.statement,'hello')
Код: Выделить всё
Traceback (most recent call last):
File "/home/main.py", line 151, in
main()
File "/home/main.py", line 116, in main
test_result = runner.run(single_suite)
^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/unittest/runner.py", line 240, in run
test(result)
File "/usr/lib/python3.12/unittest/suite.py", line 84, in __call__
return self.run(*args, **kwds)
^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/unittest/suite.py", line 122, in run
test(result)
File "/usr/lib/python3.12/unittest/case.py", line 690, in __call__
return self.run(*args, **kwds)
^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/unittest/async_case.py", line 129, in run
self._setupAsyncioRunner()
File "/usr/lib/python3.12/unittest/async_case.py", line 120, in _setupAsyncioRunner
assert self._asyncioRunner is None, 'asyncio runner is already initialized'
^^^^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError: asyncio runner is already initialized
Во-первых, я изначально вручную установил цикл событий:
Код: Выделить всё
cls.loop = asyncio.new_event_loop()
asyncio.set_event_loop(cls.loop)
cls.loop.run_until_complete(cls.asyncSetUpClass())
Код: Выделить всё
with asyncio.Runner() as runner:
runner.run(cls.asyncSetUpClass())
Код: Выделить всё
async def asyncSetUp(self):
self.name = 'foo'
self.statement = await basic_async_func()
Подробнее здесь: https://stackoverflow.com/questions/790 ... -framework