python - 使用 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
解决方案
推荐阅读
- java - 如何在 Java Map of Map 中设置自定义比较器?
- python - 如何在不和谐聊天中打印 discord.py bot 错误终端 (CLI)
- mysql - 使用 Python 3/Django,如何将 MySql 表数据导出为 YAML 文件?
- unity3d - Unity3D - 具有可变线条颜色的灵活边框
- java - 如何在 JAVA 中使用 JSON 对象制作 Arraylist?
- android - 在选择菜单项以及完成菜单项时设置视图的可见性
- ztree - ztree 加载表:如何匹配变量
- google-cloud-platform - 如何使用 Dockerfile 将 Google 服务帐户密钥作为环境变量之一传递以在 Google Cloud Run 上部署
- php - 如何访问嵌套的 XML 节点?
- express - express-graphql - 如何将 res 对象传递给上下文中的自定义函数?