Quantcast
Channel: めも
Viewing all articles
Browse latest Browse all 30

Testing async code in python

$
0
0

非同期でpytestを使う場合、pytest-asyncioを使うことになるが、やや使いにくいのでunittestのIsolatedAsyncioTestCaseを使った。

実装例

from asyncio import sleep
from unittest import IsolatedAsyncioTestCase
# test case を得るために非同期関数を呼ばなければいけないときが一番ややこしい。asyncdefadd(a, b) -> int:# function to testawait sleep(1)
    return a + b

asyncdefget_test_case(x) -> tuple[int, int]:
    await sleep(1)
    return x, 2*x

@parameterized_class(('testcase_func', 'testcase_param', 'answer'), [
    (staticmethod(get_test_case), 2, 6),
    (staticmethod(get_test_case), 3, 9),
])
classTestClass1(IsolatedAsyncioTestCase):
    a: int
    b: intasyncdefasyncSetup(self) -> None:
        self.a, self.b = await self.testcase_func(testcase_param)

    asyncdeftest_add() -> None:
        self.assertEqual(add(self.a, self.b), self.answer)

Viewing all articles
Browse latest Browse all 30

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>