Pytest精通指南(25)钩子函数-并发执行(pytest-xdist)

embedded/2024/10/18 18:15:09/

文章目录

      • 前言
      • 应用场景
      • 插件安装
      • 注意事项
      • 参数分析
      • 使用方法
      • 拓展-分组并行


请添加图片描述

前言

pytest-xdist是一个pytest插件,它用于实现测试用例的并发执行,从而显著提高大型测试套件的运行速度。

在测试套件非常庞大或测试用例之间几乎没有依赖关系时,并发执行可以显著减少测试的整体运行时间。

通过并行运行测试用例,pytest-xdist能够更好地利用多核CPU的性能,将测试用例分配到不同的CPU核心上同时运行,从而提高测试效率。

应用场景

  • 大型测试套件:当你有大量的测试用例需要执行时,pytest-xdist可以帮助你更快地完成测试。
  • 多核 CPU 环境:在具有多核 CPU 的计算机上,pytest-xdist可以充分利用硬件资源,加快测试执行速度。
  • 独立的测试用例:当测试用例之间没有复杂的依赖关系,并且可以独立运行时,pytest-xdist是非常有用的。

插件安装

安装命令pip install pytest-xdist

在这里插入图片描述

注意事项

  • 无依赖与无顺序:当测试用例之间没有依赖关系且不需要特定的执行顺序时,pytest-xdist插件可以用于并发执行测试用例,以加快测试速度。
  • 并发执行与顺序冲突:请注意,pytest-xdist的并发执行功能与pytest-ordering插件可能存在冲突。如果你希望并发执行测试用例,建议避免使用pytest-ordering插件或不要在其中定义任何执行顺序,因为pytest-ordering会强制按照定义的顺序执行测试用例,从而限制了并发执行的能力。

参数分析

pytest-xdist 插件通常提供以下参数:

  • ``-n=NUM–numprocesses=NUM`:指定并发执行的进程数
  • -n=auto: 根据当前系统的CPU核数自动设置进程数

使用方法

示例代码

python">def test_addition():assert 2 + 2 == 4def test_subtraction():assert 5 - 3 == 2def test_multiplication():assert 3 * 3 == 9def test_division():assert 10 / 2 == 5def test_case_01():assert Truedef test_case_02():assert Truedef test_case_03():assert Truedef test_case_04():assert Truedef test_case_05():assert Truedef test_case_06():assert Truedef test_case_07():assert Truedef test_case_08():assert True

执行结果

在这里插入图片描述

拓展-分组并行

示例代码

python">class Test01:def test_d(self):print("---test_d")def test_c(self):print("---test_c")class Test02:def test_b(self):print("---test_b")def test_a(self):print("---test_a")

执行结果

在这里插入图片描述


http://www.ppmy.cn/embedded/8975.html

相关文章

文献速递:深度学习胶质瘤诊断---通过深度学习和弥散加权成像提高胶质瘤遗传亚型的无创分类

Title 题目 Improving the noninvasive classification of glioma genetic subtype with deep learning and diffusion weighted imaging 通过深度学习和弥散加权成像提高胶质瘤遗传亚型的无创分类 Background 背景 Diagnostic classification of diffuse gliomas now requ…

【创建型模式】抽象工厂模式

一、抽象工厂模式概述 抽象工厂模式定义:提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。 模式动机: 1.当系统提供的工厂生产的具体产品并不是一个简单的对象,而是多个位于不同产品等级结构、属于不同类型的…

Linux常见指令

目录 ls pwd whoami cd clear touch mkdir rmdir rm man cp mv cat tac more less head tail find which alias adduser passwd userdel su nano cat file uname shutdown |管道 echo > >> < stat date 持续更新 周边…

ThingsBoard通过规则链使用邮件发送报警信息

1、描述 2、通过规则链路配置发送邮件只需 两步 3、案例 1、基础链路 2、选择变换节点里面的To Email 3、 编辑节点to email 4、 将创建告警与to email链接 5、选择外部节点中的send email 6、配置邮箱相关信息&#xff0c;如过不知道密钥如何获取的&#xff0c;请查看下…

STM32 CAN的验收筛选器

STM32 CAN的验收筛选器 简介 CAN外设的验收筛选器&#xff0c;一共有28个筛选器组&#xff0c;每个筛选器组有2个寄存器&#xff0c; CAN1和CAN2共用的筛选器的。 在 CAN 协议中&#xff0c;消息的标识符与节点地址无关&#xff0c;但与消息内容有关。因此&#xff0c;发送节…

【QT学习】8.qt事件处理机制,事件过滤器,自定义事件

1.qt事件处理机制 事件处理&#xff1a; 当用户移动鼠标的时候 &#xff0c;创建一个 鼠标移动事件对象 然后把这个对象放到 事件队列里面去&#xff0c;事件管理器 从队列中 取出事件&#xff0c;然后 调用其对应的事件处理函数。 多态机制&#xff1a; &#x…

Android中的Zygote进程介绍

在Android系统中&#xff0c;Zygote是一个特殊的进程&#xff0c;主要负责孵化&#xff08;fork&#xff09;新的应用进程&#xff0c;从而加速应用的启动过程。Zygote进程是系统启动过程中创建的第一个进程&#xff0c;它会在系统启动时被初始化并一直运行在后台。 以下是Zyg…

信息流广告大行其是,微博回望“原生”的初心

摘要&#xff1a;有流量的地方&#xff0c;就当有原生信息流广告 信息流广告&#xff0c;自2006年Facebook推出后就迅速火遍全球数字营销界&#xff0c;被誉为实现了广告主、用户、媒体平台三赢。特别是随着OCPM/OCPX大放异彩&#xff0c;信息流广告几乎成为广告主的必选项&…