协同运行所有异步测试。

pytest-asyncio-cooperative的Python项目详细描述


https://img.shields.io/badge/code%20style-black-000000.svg

使用asyncio(协作多任务处理)高效、快速地运行I/O绑定的测试套件。在

importasyncioimportpytest@pytest.mark.asyncio_cooperativeasyncdeftest_a():awaitasyncio.sleep(2)@pytest.mark.asyncio_cooperativeasyncdeftest_b():awaitasyncio.sleep(2)
^{pr2}$

快速启动

pip install pytest-asyncio-cooperative

兼容性

pytest asyncio与此插件不兼容。请卸载pytest asyncio或将此标志传递给pytest-p no:asyncio

固定装置

建议异步测试使用异步fixture。在

import asyncio
import pytest


@pytest.fixture
async def my_fixture():
    await asyncio.sleep(2)
    yield "XXX"
    await asyncio.sleep(2)


@pytest.mark.asyncio_cooperative
async def test_a(my_fixture):
    await asyncio.sleep(2)
    assert my_fixture=="XXX"

目标

  • 通过协同多任务处理减少I/O绑定测试套件的总运行时间
  • 通过协同多任务减少系统资源使用

专业人士

  • 一个I/O绑定的测试套件将运行得更快(例如,单个测试将花费同样长的时间)。整个测试套件的总运行时间将更快)
  • 一个I/O绑定的测试套件将使用更少的系统资源(例如,只使用一个线程)

缺点

  • 所有测试都必须是协同程序(即使用async关键字)
  • 无法保证测试顺序(即某些阻塞操作可能需要更长时间,并影响测试结果的顺序)
  • 测试必须相互隔离(即没有共享资源,没有模拟补丁
  • 没有并行性,CPU限制的测试不会获得性能优势

已知问题

当异步测试失败时,同步测试无法运行

异步测试在同步测试之前运行。如果异步测试失败,则同步测试将不会运行。因此同步测试不会报告通过或失败。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java GridBagLayout集合JScrollPane相对于JButton高度   使用JAXWS的java:如何设置用户代理属性   java使用Jackson将巨大的JSON响应反序列化为POJO最有效的方法是什么?   java如何实现对bouncy ball的声明?   java使用Hibernate显示给定parentNode的所有子节点   javascript模式引导与应用程序Spring引导(JAVA)   机器学习在weka java中有没有计算P值的方法?   mymysql中的java数据不一致   几何学在Java中,对于任何具有起始坐标和结束坐标的直线,如何获得矩形的4个角   java我需要读取一个字符串并从中获取一个特定的值   java短长度身份验证令牌   读取Android NFC IsoDep标记时发生java连接错误   java NoSuchMethodError:将Firebase与应用程序引擎应用程序集成时出错   java如何编写超级工厂程序?   java关联与聚合   java问题集作为学习编程未来、承诺和参与者的资源