pytest文档27-pytest分布式执行(pytest-xdist)

2023-05-16

前言

平常我们手工测试用例非常多时,比如有1千条用例,假设每个用例执行需要1分钟。如果一个测试人员执行需要1000分钟才能执行完,当项目非常紧急的时候,
我们会用测试人力成本换取时间成本,这个时候多找个小伙伴把任务分成2部分,于是时间缩减一半。如果是十个人一起执行,1000个用例理论上只需100分钟就能完成,时间缩短到了1/10。大大节省的测试时间,为项目节省了时间成本。

同样道理,当我们测试用例非常多的时候,一条条执行,很显然会比较慢,那么如何让测试用例并行执行呢,这就是我们接下来要讲的pytest分布式执行插件pytest-xdist

pytest-xdist

cmd里面使用pip安装,目前版本号Version: 1.23.2

pip install pytest-xdist

>pip show pytest-xdist
Name: pytest-xdist
Version: 1.23.2
Summary: pytest xdist plugin for distributed testing and loop-on-failing modes
Home-page: https://github.com/pytest-dev/pytest-xdist
Author: holger krekel and contributors
Author-email: pytest-dev@python.org,holger@merlinux.eu
License: MIT
Location: e:\python36\lib\site-packages
Requires: execnet, pytest-forked, six, pytest

pytest-xdist官网地址:【Home-page: https://github.com/pytest-dev/pytest-xdist】

该pytest-xdist插件扩展了一些独特的测试执行模式pytest:

  • 测试运行并行化:如果有多个CPU或主机,则可以将它们用于组合测试运行。会加快运行速度

  • --looponfail:在子进程中重复运行测试。每次运行之后,pytest会等待,直到项目中的文件发生更改,然后重新运行以前失败的测试。
    重复此过程直到所有测试通过,之后再次执行完整运行。
  • 多平台覆盖:您可以指定不同的Python解释器或不同的平台,并在所有平台上并行运行测试。
    在远程运行测试之前,pytest有效地将您的程序源代码“rsyncs”到远程位置。报告所有测试结果并显示给您的本地终端。您可以指定不同的Python版本和解释器。
    如果您想知道pytest-xdist如何在幕后工作,可以看这里【OVERVIEW】

并行测试

多cpu并行执行用例,直接加个-n参数即可,后面num参数就是并行数量,比如num设置为3

pytest -n 3

运行以下代码,项目结构如下

web_conf_py是项目工程名称
│  conftest.py
│  __init__.py
│              
├─baidu
│  │  conftest.py
│  │  test_1_baidu.py
│  │  test_2.py
│  │  __init__.py 
│          
├─blog
│  │  conftest.py
│  │  test_2_blog.py
│  │  __init__.py      

代码参考:

# web_conf_py/conftest.py
import pytest

@pytest.fixture(scope="session")
def start():
    print("\n打开首页")
    return "yoyo"

# web_conf_py/baidu/conftest.py
import pytest

@pytest.fixture(scope="session")
def open_baidu():
    print("打开百度页面_session")

# web_conf_py/baidu/test_1_baidu.py
import pytest
import time

def test_01(start, open_baidu):
    print("测试用例test_01")
    time.sleep(1)
    assert start == "yoyo"

def test_02(start, open_baidu):
    print("测试用例test_02")
    time.sleep(1)
    assert start == "yoyo"

if __name__ == "__main__":
    pytest.main(["-s", "test_1_baidu.py"])


# web_conf_py/baidu/test_2.py
import pytest
import time

def test_06(start, open_baidu):
    print("测试用例test_01")
    time.sleep(1)
    assert start == "yoyo"
def test_07(start, open_baidu):
    print("测试用例test_02")
    time.sleep(1)
    assert start == "yoyo"

if __name__ == "__main__":
    pytest.main(["-s", "test_2.py"])


# web_conf_py/blog/conftest.py
import pytest

@pytest.fixture(scope="function")
def open_blog():
    print("打开blog页面_function")

# web_conf_py/blog/test_2_blog.py

import pytest
import time
def test_03(start, open_blog):
    print("测试用例test_03")
    time.sleep(1)
    assert start == "yoyo"

def test_04(start, open_blog):
    print("测试用例test_04")
    time.sleep(1)
    assert start == "yoyo"

def test_05(start, open_blog):
    '''跨模块调用baidu模块下的conftest'''
    print("测试用例test_05,跨模块调用baidu")
    time.sleep(1)
    assert start == "yoyo"

if __name__ == "__main__":
    pytest.main(["-s", "test_2_blog.py"])

正常运行需要消耗时间:7.12 seconds

E:\YOYO\web_conf_py>pytest
============================= test session starts =============================
platform win32 -- Python 3.6.0, pytest-3.6.3, py-1.5.4, pluggy-0.6.0
rootdir: E:\YOYO\web_conf_py, inifile:
plugins: xdist-1.23.2, metadata-1.7.0, html-1.19.0, forked-0.2
collected 7 items

baidu\test_1_baidu.py ..                                                 [ 28%]
baidu\test_2.py ..                                                       [ 57%]
blog\test_2_blog.py ...                                                  [100%]

========================== 7 passed in 7.12 seconds ===========================

设置并行运行数量为3,消耗时间:3.64 seconds,大大的缩短了用例时间

E:\YOYO\web_conf_py>pytest -n 3
============================= test session starts =============================
platform win32 -- Python 3.6.0, pytest-3.6.3, py-1.5.4, pluggy-0.6.0
rootdir: E:\YOYO\web_conf_py, inifile:
plugins: xdist-1.23.2, metadata-1.7.0, html-1.19.0, forked-0.2
gw0 [7] / gw1 [7] / gw2 [7]
scheduling tests via LoadScheduling
.......                                                                  [100%]
========================== 7 passed in 3.64 seconds ===========================

测试报告

使用pytest-xdist插件也能生成html报告,完美支持pytest-html插件

pytest -n 3 --html=report.html --self-contained-html

1070438-20181011225632340-198619275.png

---------------------------------pytest结合selenium自动化完整版-------------------------

全书购买地址 https://yuedu.baidu.com/ebook/902224ab27fff705cc1755270722192e4536582b

作者:上海-悠悠 QQ交流群:874033608

也可以关注下我的个人公众号:yoyoketang

1070438-20181009214319480-1673365725.jpg

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

pytest文档27-pytest分布式执行(pytest-xdist) 的相关文章

  • c语言中阻止程序退出的函数,简要对比C语言中三个用于退出进程的函数

    C语言 exit 函数 xff1a 结束进程执行头文件 xff1a include 定义函数 xff1a void exit int status 函数说明 xff1a exit 用来立刻结束目前进程的执行 并把参数status 返回给父进
  • SQL Server 2016 JSON原生支持实例说明

    背景 Microsoft SQL Server 对于数据平台的开发者来说越来越友好 比如已经原生支持XML很多年了 xff0c 在这个趋势下 xff0c 如今也能在SQLServer2016中使用内置的JSON 尤其对于一些大数据很数据接口
  • opencv MatExpr MatOp

    opencv提供了很多Mat的操作 xff0c 其中涉及到两个重要的类 xff1a MatOp和MatExpr C 43 43 MatExpr abs const Mat amp m C 43 43 void absdiff InputAr
  • linux程序中文乱码转换,Linux下汉字编码的转换(gbk转换为utf8)

    因为项目的需要linux下将GBK编码转换为utf8编码 xff0c google一下 xff0c 网上的相关资源比较少 xff0c 下面的操作经过本人的反复试验 本例子同样适用于其他的编码转换 有gbk到utf8的转换过程 xff0c 需
  • debian系统下安装ssh服务

    它是什么 xff1f xff1f SSH 为 Secure Shell 的缩写 xff0c 简单地说 xff0c SSH 为建立在应用层基础上的安全协议 SSH 是目前较可靠 xff0c 专为远程登录会话和其他网络服务提供安全性的协议 利用
  • LinuxC编程视频教程

    linux c基础 共21集 xff09 xff1a http www 21edu8 com pcnet programming 29943 show html 29943 0 0 转载于 https blog 51cto com 1054
  • JSON_VALUE

    本页目录 语法入参功能描述示例 语法 span class pln style color rgb 0 0 0 VARCHAR JSON VALUE span span class pun style color rgb 102 102 0
  • 32131313

    32131313131311 55555555 hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh test2222222 test333333333 hhhhhhhhhhhhhhhhhhhhhh
  • aida64使用方法_AIDA64中的详细功能使用步骤介绍

    你们知道AIDA64吗 很多的新用户不熟悉AIDA64是怎么使用的 在这里就为你们呈现了AIDA64的详细使用步骤介绍 1 使用AIDA64查看电脑简单信息 打开计算机 系统概述 xff0c 即可查看计算机的一些基本参数包括CPU xff0
  • 万能平板刷机软件_平板电脑怎么刷机 平板电脑刷机方法【教程】

    摘要 xff1a 刷机简单说就是给平板电脑重装系统 xff0c 跟电脑重装系统一样 正常情况下 xff0c 只要硬件没有问题 xff0c 那么就99 99 可以通过刷机搞定你平板上碰到的问题 刷机真的这么神奇么 那么要怎样给平板电脑刷机呢
  • python中strftime函数_Python strftime()用法及代码示例

    在Python中 xff0c 日期和时间不是其自身的数据类型 xff0c 而是名为 strftime 函数用于将日期和时间对象转换为其字符串表示形式 它需要一个或多个格式化代码输入 xff0c 并返回字符串表示形式 用法 strftime
  • signature=cc29255b4425ca4c96b4511e5937abfa,http

    Message ID lt 458798778300 OQB26387 64 intrigue eastciti com gt MIME Version 1 0 Content Type multipart related boundary
  • php ajax等待返回,Ajax对PHP的调用未返回任何内容

    我正在尝试使我的第一个ajax示例在我的MAMP上运行 我的ajax html看起来像 xff1a 我的ajax js看起来像 xff1a 函数ajax gt gt var xmlhttp 如果 window XMLHttpRequest
  • epg信息服务器,EPG系统及EPG信息的实时更新方法

    1 一种EPG系统 包括 播出系统 1 xff0c 所述播出系统 I 包括节目单编辑模块 11 播出在线控制模块 12 和节目单网关模块 13 xff0c 所述节目单网关模块 13 根据节目单编辑模块 11 编辑的节目数据生成EPG信息 x
  • 大华服务器u盘做系统,#测评大玩家#大华P609双接口U盘轻松备份资料

    这些年随着智能手机和5G网络的普及 xff0c 很多人分享资料的时候 xff0c 都习惯使用即时聊天工具 xff0c 对于一些体积较大的文件 xff0c 则是用网盘来完成 不过现在消费者的隐私保护意识越来越高 xff0c 各种网盘服务的价格
  • coursera 计算概论与程序设计基础(李戈)-第二题

    判断闰年 正常情况下一年有365天 xff0c 但是闰年的时候 xff0c 一年有366天 现在给定一个年份 xff0c 请你判断它是不是闰年 凡是能被4整除的年是闰年 xff1b 但逢百之年 xff0c 能被4整除的并不是闰年 xff0c
  • Debian 7 安装使用 Virtualbox及增强功能

    一 安装virtualbox 可以从源里安装 sudo apt get install virtualbox 也可以下载最新版安装 https www virtualbox org wiki Downloads 二 安装增强功能 安装增强功
  • 《你必须知道的.NET》第二次印刷,未来与梦想

    你必须知道的 NET 网站 Anytao技术博客 你必须知道的 NET 第二次印刷 xff0c 未来与梦想 发布日期 xff1a 2008 11 20 作者 xff1a Anytao 2008 Anytao com xff0c Anytao
  • 51学习计划最后

    hhhhhhhhhhh 来了11111111111111111111111111111111111111111111111111111111111111111111111 555 4444 66 77 88 99 00 61 61 61 6
  • sql 跨数据库读取数据库中的数据

    跨数据库读取数据库中的数据 创建链接服务器 右键单击 连接服务器 xff0c 弹出 xff1a 点击 安全性 xff0c 弹出 xff1a 输入连接到的数据库的登陆名和密码 这样链接服务器就创建完成了 这样就可以通过链接服务器的方式查询到链

随机推荐

  • Android系统定制之SystemUI修改:下拉通知栏尺寸【转】

    本文转载自 xff1a https blog csdn net huil0925 article details 67632358 最近项目需要修改下拉通知栏面板的宽度 xff0c 完成后 xff0c 写个Blog做个总结 xff0c 也提
  • git只拉取github部分代码的方法

    需求 xff1a github某个项目所有代码太大 xff0c 有600 43 M xff0c 甚至更大 xff1b 只需要拉取部分代码 xff0c 一是可以降低网络消耗 xff0c 二是可以降低磁盘占用 分析了下空间占用情况 xff1a
  • MatLab计算图像圆度

    本文所述方法可以检测同一图像中的多个圆形 xff08 准确的说 xff0c 应该是闭合图像 xff09 在Matlab2010a中可以实现 附录效果图 xff1a 颗粒圆度 clear close all 读取源图像 I 61 imread
  • RSA签名的PSS模式

    本文由云 43 社区发表 作者 xff1a mariolu 一 什么是PSS模式 xff1f 1 1 两种签名方式之一RSA PSS PSS Probabilistic Signature Scheme 私钥签名流程的一种填充模式 目前主流
  • 爬虫mm131明星照片

    1 39 39 39 2 1 爬取以下站点中各个明星图片 xff0c 分别单独建文件夹存放 3 起始URL地址 xff1a http www mm131 com mingxing 4 39 39 39 5 import os 6 impor
  • 使用IDEA工具配置和运行vue项目(详细其中的坑)

    刚来公司实习发现公司的前端使用的是vue xff0c 之前根本就没有听说过 然后一上来就需要看代码 xff0c but but 就是没有文档什么的东西 xff0c 就需要自己去研读 xff0c 我就想去运行其中的前端和后端联调起来方便理解
  • pycharm永久激活方式

    网上找了好多 xff0c 还是这个最方便快捷 1 下载 链接 https pan baidu com s 1axPsIaedtZDRG7lTup9b5g 密码 7vxp xff0c 并将 JetbrainsCrack 2 10 releas
  • Majority Element出现次数超过一半的数字

    Given an array of size n find the majority element The majority element is the element that appears more than n 2 times
  • C#实现WEB服务器

    一 HTTP协议的作用原理 WWW是以Internet作为传输媒介的一个应用系统 xff0c WWW网上最基本的传输单位是Web网页 WWW的工作基于客户机 服务器计算模型 xff0c 由Web 浏览器 客户机 和Web服务器 服务器 构成
  • 51学习计划

    hhhhhhhhhhh 来了11111111111111111111111111111111111111111111111111111111111111111111111 555 4444 66 77 88 99 00 61 61 61 6
  • Linux 配置静态IP

    在新安装的Linux系统命令行下 xff0c 敲入 xff1a ifconfig 显示如下界面 上面这张图显示网卡没有启动 xff0c 那么我们敲入代码 xff1a ifup eth0启动网卡 网卡启动后 xff0c 我们可以看出 xff0
  • 关于硬件渲染了解一下

    浏览器的渲染方式 xff0c 主要分为两种 xff0c 第一种是软件渲染 xff0c 第二种是硬件渲染 如果绘制工作只是由 CPU 完成 xff0c 那么称之为软件渲染 xff0c 如果绘制工作由 GPU 完成 xff0c 则称之为硬件渲染
  • 七牛云PHP 20m文件上传不了,tp上传到七牛 文件大了就无法上传 但是没有限制

    config php没有限制 如下 39 UPLOAD SITEIMG QINIU 39 61 gt array 39 rootPath 39 61 gt 39 39 39 saveName 39 61 gt array 39 uniqid
  • Debian6.0.7的archive mirror列表真接地气

    为什么80 的码农都做不了架构师 xff1f gt gt gt 转载于 https my oschina net cers blog 111135
  • 05-03-通过组策略(域)配置加域客户端补丁自动更新

    系统工程师实战培训 05 部署补丁管理服务器 03 通过组策略 域 配置加域客户端补丁 自动更新 作者 xff1a 学 无 止 境 QQ交流群 xff1a 454544014 在100 Admin01上安装 组策略 管理工具 创建完成后 x
  • sql server 2016 json 解析方法

    前几天发现了sql server 2016支持了json 项目需要所以安装了 用了一下 方便了很多 xff0c 写一下小笔记方便日后查看 xff0c 也希望各位大神指正共同学习 sql server 2016 安装图解网上很多 xff0c
  • Windows Server 系列服务器之轻松修改远程端口

    Windows系列的服务器 xff0c 远程端口号默认的是3389 xff0c 当然 xff0c 一些服务器服务商可能会是其他的端口 在生产环境中 xff0c 对于服务器安全来讲 修改远程端口和屏蔽一些不用的端口是非常有必要的 在安装好服务
  • 使用组策略进行软件升级

    使用组策略进行软件升级 升级包括强制升级和可选升级 xff0c 强制升级就是强制用户卸载已经安装的旧版本软件 xff0c 安装新版软件 可选升级就是保留旧版本的情况下安装新版本 本示例演示强制升级部署给用户的画图软件 任务 xff1a u
  • Linux查看系统上的时间和日期

    大家好 xff0c 本篇博客介绍了两个关于Linux里的时间和日期的命令 xff0c 有些内容是我自己翻译的 xff0c 如果有不足 xff0c 还望读者多多指教 本篇博客的符号说明 xff1a 里的值都不是固定的 xff0c 而不是可选的
  • pytest文档27-pytest分布式执行(pytest-xdist)

    前言 平常我们手工测试用例非常多时 xff0c 比如有1千条用例 xff0c 假设每个用例执行需要1分钟 如果一个测试人员执行需要1000分钟才能执行完 xff0c 当项目非常紧急的时候 xff0c 我们会用测试人力成本换取时间成本 xff