Как обработать CancelledError с модулем тестирования Python 3.8 IsolatedAsyncioTestCase - PullRequest
1 голос
/ 07 ноября 2019

Я хотел бы задать вопрос об обработке asyncio.CancelledError из IsolatedAsyncioTestCase , который предназначен для тестирования asyncio на py3.8

Учитывая следующие тестовые случаи

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()

Он был засосан на tearDown

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 была выборочно повышена, но не другимиисключение. Итак, мне интересно, как отловить и обработать эту ошибку вместо зависания в терминале.

...