pytest-asyncio:协程异步测试案例

简介:pytest-asyncio是一个pytest插件。它便于测试使用异步库的代码。具体来说,pytest-asyncio提供了对作为测试函数的协同程序的支持。这允许用户在测试中等待代码。

历史攻略:

asyncio并发访问websocket

Python:协程 - 快速创建三步骤

Python:获取协程返回值的四种方式

Python:多进程,多线程,协程基础案例

Python:aiomultiprocess实现协程与多进程的强强联合

安装:

复制代码
pip install pytest-asyncio

使用案例:aysncio_demo.py

复制代码
# -*- coding: utf-8 -*-
# time: 2024/4/5 12:06
# file: asyncio_demo.py
# 公众号: 玩转测试开发

import asyncio
import datetime


async def do_somethings(user):
    # 1、定义协程函数
    print(f"{user} is do_somethings. the time is {datetime.datetime.now()}")
    await asyncio.sleep(0.1)
    return user + " is finish do_somethings."


async def do_another(user):
    print(f"{user} is do_another. the time is {datetime.datetime.now()}")
    await asyncio.sleep(0.2)
    return user + " is finish do_another."


async def do_others(user):
    print(f"{user} is do_others. the time is {datetime.datetime.now()}")
    return user + " is finish do_others."


if __name__ == '__main__':
    # 3、加入事件循环。
    tasks = []
    for i in range(3):
        tasks.append(do_somethings("tom"))
        tasks.append(do_another("ken"))
        tasks.append(do_others("lily"))

    asyncio.run(asyncio.wait(tasks))

test_demo.py

复制代码
# -*- coding: utf-8 -*-
# time: 2024/3/31 10:34
# file: test_demo.py
# 公众号: 玩转测试开发
import sys
import pytest
from lib.asyncio_demo import do_somethings, do_another, do_others
from logger import log


@pytest.mark.asyncio
async def test_do_somethings():
    user = "tom"
    res = await do_somethings(user)
    log.info(f"{res}")
    pytest.assume(user + " is finish do_somethings." in res)


@pytest.mark.asyncio
async def test_do_another():
    user = "ken"
    res = await do_another(user)
    log.info(f"{res}")
    pytest.assume(user + " is finish do_another." in res)


@pytest.mark.asyncio
async def test_do_others():
    user = "lily"
    res = await do_others(user)
    log.info(f"{res}")
    
    # 此次故意放一个错误试试。
    pytest.assume(user + " is finish do_others." not in res)

运行结果:

相关推荐
天天爱吃肉821827 分钟前
【重磅发布:拿下新超仁达代理权 】
大数据·人工智能·python·功能测试·汽车
(Charon)30 分钟前
【C++】锁与原子操作(四):自旋锁的完整实现与性能优化
c语言·开发语言·c++
神王宝宝 王者小学32 分钟前
面向领域驱动架构的查询实现方式
前端·python·架构
bu_shuo2 小时前
MATLAB中的meshgrid和ndgrid
开发语言·matlab
ningmengjing_2 小时前
Redis 从入门到实战:Python操作全攻略
数据库·redis·python
️学习的小王2 小时前
智能文档助手:基于RAG的本地化文档问答系统实战指南
人工智能·python·机器学习
我命由我123452 小时前
Jetpack Compose - MaterialExpressiveTheme 与 MaterialTheme、ColorScheme
android·java·开发语言·java-ee·kotlin·android jetpack·android runtime
不瘦80斤不改名2 小时前
05-vibe-coding-向agentic-engineering演进
人工智能·笔记·python·prompt
笨鸟先飞,勤能补拙3 小时前
AI 安全的下一个 5 年:从 Agent 到 AGI 的攻防博弈
人工智能·python·安全·web安全·网络安全·github·agi