gpt4 book ai didi

python - 如何使用 python 3.8 unittest IsolatedAsyncioTestCase 处理 CancelledError

转载 作者:行者123 更新时间:2023-12-05 07:17:34 29 4
gpt4 key购买 nike

我想问一下关于从 IsolatedAsyncioTestCase 处理 asyncio.CancelledError 的问题,它是为在 py3.8 上测试 asyncio 而提供的

给定以下测试用例

import unittest
from unittest import IsolatedAsyncioTestCase
import asyncio


class Test(IsolatedAsyncioTestCase):
def setUp(self):
print('setup')

async def asyncSetUp(self):
print('async setup')

async def test_response(self):
print('test_response')
self.addAsyncCleanup(self.on_cleanup)

def tearDown(self):
print('teardown')

async def asyncTearDown(self):
print('before async teardown')
fut = asyncio.Future()
fut.cancel()
await fut
print('after async teardown')

async def on_cleanup(self):
print('clean up')


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

它被拆解了

root@1318a3fe59d0:/# python --version
Python 3.8.0
root@1318a3fe59d0:/# python /workspace/b.py
setup
async setup
test_response
before async teardown
....

深入研究错误堆栈(通过按 CTRL+C 终止进程)和源代码来自 github ,这些是与此错误相关的代码。

错误 asyncio.CancelledError 已被选择性地引发,但不是其他异常。所以,我想知道如何捕获和处理这个错误,而不是卡在终端上。

最佳答案

最近,我发现了一个 similar issue来自 python 的票务系统。

希望它已于 2020-12-16 得到解决。此外,通过 checking what they modified在 3.8 分支中,他们更改了捕获异常的方式。

因此,只要您拥有包含此修复程序的最新 python,就不会再遇到此问题。

关于python - 如何使用 python 3.8 unittest IsolatedAsyncioTestCase 处理 CancelledError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58744043/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com