首页 > 解决方案 > 使用 Thread().start() 和 asyncio.Event 时,unittest 永远不会关闭

问题描述

我有一个像这样的小型 Python 单元测试程序:

class Test(unittest.IsolatedAsyncioTestCase):

    async def test_rabbitmq(self):
        e = Event_ts() # Event_ts is taken here: https://stackoverflow.com/questions/33000200/asyncio-wait-for-event-from-other-thread

        def callback(msg):
            self.assertEqual(msg, "Hello World!")
            e.set()

        def on_ready():
            # Sending some data

        def start_receive():
            MessageReceiver(callback, on_ready)

        Thread(target=start_receive).start()

        await e.wait()

if __name__ == '__main__':
    unittest.main()

代码本身运行良好,unittest 告诉我我所有的测试都可以

.
----------------------------------------------------------------------
Ran 1 test in 0.049s

OK

但是在那之后我什么也做不了,程序不会退出,Ctrl^C 或 Ctrl^D 之类的东西不起作用
我唯一的解决方案是关闭终端

所以我的问题是,我的代码是不是做错了什么,或者它是一个特殊的组合键来强制 Python 停止?

我在 Windows 上使用 Python 3.9.2

标签: pythonpython-3.x

解决方案


推荐阅读