我有一个在Python(3.6)中测试异步代码的方法:
@asyncio.coroutine
def coroutine_creater(value):
return value
我这样使用它:
async def test_test():
my_mock = Mock(return_value=coroutine_creater(5))
# I call with "await"
first_call = await my_mock()
second_call = await my_mock()
assert first_call == 5, 'first call failed'
assert second_call == 5, 'second call failed' # this call fails
这样我就可以为异步调用创建模拟。但是我发现,如果我两次调用异步方法,它就不起作用了。在我的代码中,first_call
的值如预期的那样等于5,但是second_call
的值为None。这是怎么回事?我该如何测试调用Mock异步方法多次的代码?