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 16 Python
Python中用于转换字母为小写的lower()方法使用简介
May 19 Python
python定时检查某个进程是否已经关闭的方法
May 20 Python
PyQt 线程类 QThread使用详解
Jul 16 Python
python的文件操作方法汇总
Nov 10 Python
Django中使用Celery的教程详解
Aug 24 Python
python pandas实现excel转为html格式的方法
Oct 23 Python
Python语法分析之字符串格式化
Jun 13 Python
python实现字典嵌套列表取值
Dec 16 Python
python使用rsa非对称加密过程解析
Dec 28 Python
Flask和pyecharts实现动态数据可视化
Feb 26 Python
python中mongodb包操作数据库
Apr 19 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缩略图等比例无损压缩,可填充空白区域补充色
2011/06/10 PHP
分享最受欢迎的5款PHP框架
2014/11/27 PHP
jQuery 选择器理解
2010/03/16 Javascript
JavaScript为对象原型prototype添加属性的两种方式
2010/08/01 Javascript
jquery 实现窗口的最大化不论什么情况
2013/09/03 Javascript
JQuery中的html()、text()、val()区别示例介绍
2014/09/01 Javascript
nodejs教程之制作一个简单的文章发布系统
2014/11/21 NodeJs
JS控制文本域只读或可写属性的方法
2016/06/24 Javascript
jsTree使用记录实例
2016/12/01 Javascript
在Vue项目中使用d3.js的实例代码
2018/05/01 Javascript
在vue中使用公共过滤器filter的方法
2018/06/26 Javascript
使用vue2.0创建的项目的步骤方法
2018/09/25 Javascript
Vuejs监听vuex中值的变化的方法示例
2018/12/02 Javascript
vue响应式系统之observe、watcher、dep的源码解析
2019/04/09 Javascript
JavaScript复制变量三种方法实例详解
2020/01/09 Javascript
微信小程序弹窗禁止页面滚动的实现代码
2020/12/30 Javascript
简单介绍Python2.x版本中的cmp()方法的使用
2015/05/20 Python
python 实现在txt指定行追加文本的方法
2018/04/29 Python
Python中文编码知识点
2019/02/18 Python
python解释器spython使用及原理解析
2019/08/24 Python
python中round函数如何使用
2020/06/19 Python
CSS3制作日历实现代码
2012/01/21 HTML / CSS
HTML5 Canvas绘制五星红旗
2016/05/04 HTML / CSS
Yves Rocher捷克官方网站:植物化妆品的创造者
2019/07/31 全球购物
判断单链表中是否存在环
2012/07/16 面试题
项目合作计划书
2014/01/09 职场文书
文明宿舍获奖感言
2014/02/07 职场文书
给学校的建议书
2014/03/12 职场文书
父母寄语大全
2014/04/12 职场文书
环保倡议书怎么写
2014/05/16 职场文书
物业公司的岗位任命书
2014/06/06 职场文书
2014幼儿园大班工作总结
2014/11/10 职场文书
清洁工个人总结
2015/03/04 职场文书
2016中秋节广告语
2016/01/28 职场文书
2019财务管理制度最新范本!
2019/07/09 职场文书
mysql事务对效率的影响分析总结
2021/10/24 MySQL