我不知道可以将装饰器@pytest.mark.asyncio
用于哪些目的。
我尝试在安装了pytest
和pytest-asyncio
插件的情况下运行以下代码段,但该代码段失败,因此我得出结论pytest无需装饰器即可收集测试协程。为什么会这样存在?
async def test_div():
return 1 / 0
答案 0 :(得分:0)
当您的测试标记有@pytest.mark.asyncio
时,它们与正文中的关键字await
一起变为coroutines
pytest
将使用event_loop
装置提供的事件循环将其作为异步任务执行:
此代码与装饰器
@pytest.mark.asyncio
async def test_example(event_loop):
do_stuff()
await asyncio.sleep(0.1, loop=event_loop)
等同于编写:
def test_example():
loop = asyncio.new_event_loop()
try:
do_stuff()
asyncio.set_event_loop(loop)
loop.run_until_complete(asyncio.sleep(0.1, loop=loop))
finally:
loop.close()