非同期で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)