我正在编写一个单元测试,它继承自asynctest.TestCase
并希望创建一些在每个测试用例之前执行异步的 mixin:setUp
import asynctest
class Mixin1(object):
async def setUp(self):
await super(Mixin1, self).setUp()
class MyTest(Mixin1, asynctest.TestCase):
async def setUp(self):
await super(MyTest, self).setUp()
我看到的问题是 Mixin1 最终调用asynctest.TestCase.setUp
了一个非异步方法,我们得到:
TypeError: object NoneType can't be used in 'await' expression
显然,我可以更改Mixin1
为对 进行阻塞调用setUp
,但是如果我引入第二个异步 mixin,它将失败。
我最终像这样编写了所有设置调用,但感觉必须有更好的方法:
async def setUp(self):
# do stuff
setUp = super(Mixin1, self).setUp
if asyncio.iscoroutine():
await setUp()
else:
setUp()
有没有更好的方法来链接 setUp 调用?