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的自动化部署模块Fabric的安装及使用指南
Jan 19 Python
python 网络爬虫初级实现代码
Feb 27 Python
ansible作为python模块库使用的方法实例
Jan 17 Python
python爬虫的数据库连接问题【推荐】
Jun 25 Python
用xpath获取指定标签下的所有text的实例
Jan 02 Python
使用python将请求的requests headers参数格式化方法
Jan 02 Python
python requests 库请求带有文件参数的接口实例
Jan 03 Python
Python深拷贝与浅拷贝用法实例分析
May 05 Python
Python解析命令行读取参数之argparse模块
Jul 26 Python
tensorflow 保存模型和取出中间权重例子
Jan 24 Python
Python实现打包成库供别的模块调用
Jul 13 Python
基于python的opencv图像处理实现对斑马线的检测示例
Nov 29 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简介
2006/10/09 PHP
PHP的一个基础知识 表单提交
2011/07/04 PHP
thinkPHP模型初始化实例分析
2015/12/03 PHP
php5.3/5.4/5.5/5.6/7常见新增特性汇总整理
2020/02/27 PHP
根据邮箱的域名跳转到相应的登录页面的代码
2012/02/27 Javascript
推荐40个简单的 jQuery 导航插件和教程(下篇)
2012/09/14 Javascript
基于jquery DOM写的类似微博发布的效果
2012/10/20 Javascript
javascript数组去重方法终极总结
2014/06/05 Javascript
javascript中递归函数用法注意点
2015/07/30 Javascript
JS实现屏蔽网页右键复制及ctrl+c复制的方法【2种方法】
2016/09/04 Javascript
JS获取短信验证码倒计时的实现代码
2017/05/22 Javascript
input框中自动展示当前日期yyyy/mm/dd的实现方法
2017/07/06 Javascript
jquery.rotate.js实现可选抽奖次数和中奖内容的转盘抽奖代码
2017/08/23 jQuery
Three.js如何用轨迹球插件(trackball)增加对模型的交互功能详解
2017/09/25 Javascript
浅谈mvvm-simple双向绑定简单实现
2018/04/18 Javascript
在vue项目中正确使用iconfont的方法
2018/09/28 Javascript
vue中element 的upload组件发送请求给后端操作
2020/09/07 Javascript
nuxt 每个页面head标签内容设置方式
2020/11/05 Javascript
使用vue编写h5公众号跳转小程序的实现代码
2020/11/27 Vue.js
在Python中测试访问同一数据的竞争条件的方法
2015/04/23 Python
python实现多线程的方式及多条命令并发执行
2016/06/07 Python
python中matplotlib实现最小二乘法拟合的过程详解
2017/07/11 Python
使用Python设计一个代码统计工具
2018/04/04 Python
解决pandas read_csv 读取中文列标题文件报错的问题
2018/06/15 Python
Python爬虫包BeautifulSoup异常处理(二)
2018/06/17 Python
78行Python代码实现现微信撤回消息功能
2018/07/26 Python
Django框架登录加上验证码校验实现验证功能示例
2019/05/23 Python
CSS3图片旋转特效(360/60/-360度)
2013/10/10 HTML / CSS
html5 canvas里绘制椭圆并保持线条粗细均匀的技巧
2013/03/25 HTML / CSS
乡镇领导班子批评与自我批评材料
2014/09/23 职场文书
2015年医药代表工作总结
2015/04/25 职场文书
员工表扬信怎么写
2015/05/05 职场文书
如何写通讯稿
2015/07/22 职场文书
详解Java实践之适配器模式
2021/06/18 Java/Android
Python获取指定日期是"星期几"的6种方法
2022/03/13 Python
详解Python flask的前后端交互
2022/03/31 Python