@pytest.mark.asyncio 是 pytest 提供的一个装饰器,用于标记异步测试函数。它告诉 pytest 这是一个异步测试函数,需要在运行测试时使用 asyncio 的事件循环来执行。
在 Python 中,异步代码通常使用 asyncio 模块来编写。pytest 本身不支持直接运行异步代码,但可以使用 pytest-asyncio 插件来支持异步测试。使用 @pytest.mark.asyncio 装饰器可以告诉 pytest-asyncio 插件将该函数视为异步测试函数,并使用 asyncio 的事件循环来执行。
通过标记为异步测试函数,您可以在测试中使用 async/await 语法来编写异步代码,使用 pytest-asyncio 运行这些测试,并确保测试函数的异步行为得到正确的验证。
当使用@pytest.mark.asyncio
标记一个测试函数时,该函数将被认为是一个异步函数,并可以在其中使用异步操作和异步断言。
下面是一个使用@pytest.mark.asyncio
标记的示例:
import pytest
import asyncio
async def async_function():
await asyncio.sleep(1)
return 42
@pytest.mark.asyncio
async def test_async_function():
result = await async_function()
assert result == 42
在上面的示例中,async_function()
是一个异步函数,它会等待1秒钟后返回42。test_async_function()
被标记为异步测试函数,并在其中调用了async_function()
。使用异步断言assert
来验证返回值是否为42。