在setUp()中创建asyncio事件是AIOUnitest的一个陷阱

2024-09-29 21:51:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用aiounitest进行单元测试。 在setUp()方法中创建类型为asyncio.Event()的对象。 等待此对象将导致“RuntimeError…Get Future连接到其他循环”

问题的原因似乎是aiounitest在执行测试之前,但在调用setUp之后,创建了一个新的事件循环。 直接从测试函数调用own setUp和tearDown可以解决这个问题。但这不是我想要的

是否可以在setUp()中使用正确的事件循环创建事件

对于aiounitestwheresetUp()tearDown(),是否有一种替代方法,具有正确的事件循环和异步支持

这里是我的测试代码:

import asyncio
import aiounittest


class TestAsyncioEvent(aiounittest.AsyncTestCase):

    async def trigger_event(self, event):
        await asyncio.sleep(0.5)
        event.set()

    def setUp(self):
        aiounittest.AsyncTestCase.setUp(self)
        self.event = asyncio.Event()

    async def test_event_wait(self):
        task = asyncio.create_task(self.trigger_event(self.event))
        await self.event.wait()
        await task

Tags: 对象方法importselfeventasynciotaskdef

热门问题