pytest实现多进程与多线程运行超好用的插件


Posted in Python onJuly 15, 2022

前言

如果想分布式执行用例,用例设计必须遵循以下原则:

1、用例之间都是独立的,
2、用例a不要去依赖用例b
3、用例执行没先后顺序,
4、随机都能执行每个用例都能独立运行成功每个用例都能重复运行,不影响其它用例
这跟就我们平常多个人工测试一样,用例都是独立的,可以随机分配不同人员执行,互相不依赖,用例之间也不存在先后顺序

一、pytest-parallel

安装:pip install pytest-parallel

常用参数配置:

  • --workers=n:多进程运行需要加此参数, n是进程数。默认为1
  • --tests-per-worker=n:多线程需要添加此参数,n是线程数

如果两个参数都配置了,就是进程并行,每个进程最多n个线程,总线程数:进程数*线程数

注意:在windows上进程数永远为1。

需要使用 if name == “main”:,在dos中运行会报错

#!/usr/bin/env python
# _*_ coding: utf-8 _*_
# @project : API_Service
# @File    : test_1.py
# @Date    : 2021/6/15 3:07 下午
# @Author  : 李文良


# demo:
import pytest

def test_01():
    print('测试用例1操作')

def test_02():
    print('测试用例2操作')

def test_03():
    print('测试用例3操作')

def test_04():
    print('测试用例4操作')


def test_05():
    print('测试用例5操作')


def test_06():
    print('测试用例6操作')


def test_07():
    print('测试用例7操作')


def test_08():
    print('测试用例8操作')

if __name__ == "__main__":
    pytest.main(["-s", "test_1.py",'--workers=2', '--tests-per-worker=4'])

pytest实现多进程与多线程运行超好用的插件

二、pytest-xdist

安装:pip install pytest-xdist

不支持多线程

常用参数配置:

  • -n=*:*代表进程数

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

  • -n auto 自动侦测系统里的CPU数目
  • -n num 指定运行测试的处理器进程数

三、对比说明

pytest-parallel比pytst-xdist相对好用,功能支持多。

pytst-xdist不支持多线程,而pytest-parallel支持python3.6及以上版本,如果想做多进程并发在linux或者mac上做,在Windows上不起作用(Workers=1),如果做多线程linux/mac/windows平台都支持,进程数为workers的值。

pytest-parallel常用配置命令如下

  • –workers (optional) *:多进程运行需要加此参数, *是进程数。默认为1。
  • –tests-per-worker (optional) *:多线程运行, *是每个worker运行的最大并发线程数。默认为1

pytest test.py --workers 3:3个进程运行
pytest test.py --tests-per-worker 4:4个线程运行
pytest test.py --workers 2 --tests-per-worker 4:2个进程并行,且每个进程最多4个线程运行,即总共最多8个线程运行。

四、特别注意

1、pytest-parallel的workers参数在windows系统下永远是1,在linux和mac下可以取不同值。
2、pytest-parallel加了多线程处理后,最后执行时间是运行时间最长的线程的时间。
3、在windows下想用多进程的选pytst-xdist; 想用多线程的选pytest-parallel

到此这篇关于pytest实现多进程与多线程运行超好用的插件的文章就介绍到这了,更多相关pytest 多进程与多线程运行插件内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python实现文件名批量替换和内容替换
Mar 20 Python
python类和函数中使用静态变量的方法
May 09 Python
Python如何获取系统iops示例代码
Sep 06 Python
Python 使用os.remove删除文件夹时报错的解决方法
Jan 13 Python
Python3 处理JSON的实例详解
Oct 29 Python
教你用 Python 实现微信跳一跳(Mac+iOS版)
Jan 04 Python
Python爬虫基础之XPath语法与lxml库的用法详解
Sep 13 Python
Django 中间键和上下文处理器的使用
Mar 17 Python
python之PyQt按钮右键菜单功能的实现代码
Aug 17 Python
python cv2截取不规则区域图片实例
Dec 21 Python
python实现文件+参数发送request的实例代码
Jan 05 Python
Python中的np.argmin()和np.argmax()函数用法
Jun 02 Python
python如何将mat文件转为png
Jul 15 #Python
python读取mat文件生成h5文件的实现
Jul 15 #Python
全网非常详细的pytest配置文件
Jul 15 #Python
Python如何加载模型并查看网络
Jul 15 #Python
Python绘制散点图之可视化神器pyecharts
Jul 07 #Python
Python可视化神器pyecharts之绘制箱形图
Jul 07 #Python
Python通用验证码识别OCR库ddddocr的安装使用教程
Jul 07 #Python
You might like
php 截取字符串并以零补齐str_pad() 函数
2011/05/07 PHP
php 检查电子邮件函数(自写)
2014/01/16 PHP
php自定义错误处理用法实例
2015/03/20 PHP
ThinkPHP中order()使用方法详解
2016/04/19 PHP
jquery imgareaselect 使用利用js与程序结合实现图片剪切
2009/07/30 Javascript
MooBox 基于Mootools的对话框插件
2012/01/20 Javascript
关于JavaScript与HTML的交互事件
2013/04/12 Javascript
『JavaScript』限制Input只能输入数字实现思路及代码
2013/04/22 Javascript
jQuery判断iframe中元素是否存在的方法
2013/05/11 Javascript
extJS中常用的4种Ajax异步提交方式
2014/03/07 Javascript
js使用for循环及if语句判断多个一样的name
2014/09/09 Javascript
jquery实现勾选复选框触发事件给input赋值
2015/02/01 Javascript
javascript实现的闭包简单实例
2015/07/17 Javascript
javascript表单验证大全
2015/08/12 Javascript
JS+CSS实现的简单折叠展开多级菜单效果
2015/09/12 Javascript
JS实现一次性弹窗的方法【刷新后不弹出】
2016/12/26 Javascript
JS获取本周周一,周末及获取任意时间的周一周末功能示例
2017/02/09 Javascript
jquery.flot.js简单绘制折线图用法示例
2017/03/13 Javascript
Angularjs+bootstrap+table多选(全选)支持单击行选中实现编辑、删除功能
2017/03/27 Javascript
js实现适配不同的屏幕大小
2017/04/10 Javascript
js实现添加删除表格(两种方法)
2017/04/27 Javascript
layui 点击重置按钮, select 并没有被重置的解决方法
2019/09/03 Javascript
如何实现iframe父子传参通信
2020/02/05 Javascript
JS实现多功能计算器
2020/10/28 Javascript
python写的一个squid访问日志分析的小程序
2014/09/17 Python
Python实现PS图像调整黑白效果示例
2018/01/25 Python
HTML5 Canvas实现平移/放缩/旋转deom示例(附截图)
2013/07/04 HTML / CSS
意大利奢侈品零售商:ilDuomo Novara
2019/09/11 全球购物
关于运动会广播稿50字
2014/10/18 职场文书
故宫英文导游词
2015/01/31 职场文书
小学校长个人总结
2015/03/03 职场文书
房地产工程部经理岗位职责
2015/04/09 职场文书
2015婚礼主持词开场白
2015/05/28 职场文书
ORACLE查看当前账号的相关信息
2021/06/18 Oracle
聊聊redis-dump工具安装问题
2022/01/18 Redis
关于对TypeScript泛型参数的默认值理解
2022/07/15 Javascript