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中使用dom模块生成XML文件示例
Apr 05 Python
Python做文本按行去重的实现方法
Oct 19 Python
Python实现针对中文排序的方法
May 09 Python
Python实现图片滑动式验证识别方法
Nov 09 Python
python验证码识别实例代码
Feb 03 Python
python虚拟环境迁移方法
Jan 03 Python
代码详解django中数据库设置
Jan 28 Python
Python绘制股票移动均线的实例
Aug 24 Python
TensorFlow中如何确定张量的形状实例
Jun 23 Python
解决Pycharm 中遇到Unresolved reference 'sklearn'的问题
Jul 13 Python
Pyqt5将多个类组合在一个界面显示的完整示例
Sep 04 Python
Python jiaba库的使用详解
Nov 23 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查询并删除数据库多列重复数据的方法(利用数组函数实现)
2016/02/23 PHP
Zend Framework入门应用实例详解
2016/12/11 PHP
php断点续传之文件分割合并详解
2016/12/13 PHP
Laravel 修改默认日志文件名称和位置的例子
2019/10/17 PHP
JavaScript 异步调用框架 (Part 3 - 代码实现)
2009/08/04 Javascript
理解Javascript_07_理解instanceof实现原理
2010/10/15 Javascript
JavaScript常用验证函数实例汇总
2014/11/25 Javascript
浅谈js的setInterval事件
2014/12/05 Javascript
jQuery+html5实现div弹出层并遮罩背景
2015/04/15 Javascript
jQuery幻灯片带缩略图轮播效果代码分享
2015/08/17 Javascript
JS中对象与字符串的互相转换详解
2016/05/20 Javascript
基于zepto.js简单实现上传图片
2016/06/21 Javascript
vue中的模态对话框组件实现过程
2018/05/01 Javascript
Vue中使用vee-validate表单验证的方法
2018/05/09 Javascript
微信小程序canvas.drawImage完全显示图片问题的解决
2018/11/30 Javascript
vue中使用[provide/inject]实现页面reload的方法
2019/09/30 Javascript
Vue实现简单计算器案例
2020/02/25 Javascript
[11:12]2018DOTA2国际邀请赛寻真——绿色长城OpTic
2018/08/10 DOTA
python BeautifulSoup设置页面编码的方法
2015/04/03 Python
Python实现矩阵转置的方法分析
2017/11/24 Python
python如何实现视频转代码视频
2019/06/17 Python
python socket 聊天室实例代码详解
2019/11/14 Python
python GUI库图形界面开发之PyQt5中QWebEngineView内嵌网页与Python的数据交互传参详细方法实例
2020/02/26 Python
Python通过正则库爬取淘宝商品信息代码实例
2020/03/02 Python
详解scrapy内置中间件的顺序
2020/09/28 Python
image-set实现Retina屏幕下图片显示详细介绍
2012/12/24 HTML / CSS
使用css3实现的windows8开机加载动画
2014/12/09 HTML / CSS
localStorage的过期时间设置的方法详解
2018/11/26 HTML / CSS
Levi’s美国官网:美国著名的牛仔裤品牌
2016/08/19 全球购物
超30万乐谱下载:Musicnotes.com
2016/09/24 全球购物
用Java语言将一个键盘输入的数字转化成中文输出
2013/01/25 面试题
监理员的岗位职责
2013/11/13 职场文书
化学专业毕业生求职信
2014/07/28 职场文书
群众对十八届四中全会的期盼
2014/10/17 职场文书
学校中秋节活动总结
2015/03/23 职场文书
穆斯林的葬礼读书笔记
2015/06/26 职场文书