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 相关文章推荐
SublimeText 2编译python出错的解决方法(The system cannot find the file specified)
Nov 27 Python
深入浅析python中的多进程、多线程、协程
Jun 22 Python
python实现堆和索引堆的代码示例
Mar 19 Python
pycharm安装和首次使用教程
Aug 27 Python
对Python 窗体(tkinter)树状数据(Treeview)详解
Oct 11 Python
python多进程控制学习小结
Oct 31 Python
python虚拟环境迁移方法
Jan 03 Python
使用Puppeteer爬取微信文章的实现
Feb 11 Python
Python 数据的累加与统计的示例代码
Aug 03 Python
python爬取天气数据的实例详解
Nov 20 Python
pandas按照列的值排序(某一列或者多列)
Dec 13 Python
OpenCV-Python 实现两张图片自动拼接成全景图
Jun 11 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
用C/C++扩展你的PHP 为你的php增加功能
2012/09/06 PHP
PHP使用ob_start生成html页面的方法
2014/11/07 PHP
Yii核心验证器api详解
2016/11/23 PHP
php实现银联商务公众号+服务窗支付的示例代码
2019/10/12 PHP
Javascript打印网页部分内容的脚本
2008/11/17 Javascript
解决jquery .ajax 在IE下卡死问题的解决方法
2009/10/26 Javascript
jQuery的链式调用浅析
2010/12/03 Javascript
Bootstrap实现响应式导航栏效果
2015/12/28 Javascript
AngularJs  Using $location详解及示例代码
2016/09/02 Javascript
js内置对象处理_打印学生成绩单的简单实现
2016/09/24 Javascript
js复制内容到剪贴板代码,js复制代码的简单实例
2016/10/27 Javascript
javascript中的后退和刷新实现方法
2016/11/10 Javascript
Nodejs 搭建简单的Web服务器详解及实例
2016/11/30 NodeJs
js的函数的按值传递参数(实例讲解)
2017/11/16 Javascript
使用vue-cli打包过程中的步骤以及问题的解决
2018/05/08 Javascript
微信小程序实现倒计时调用相机自动拍照功能
2018/06/10 Javascript
微信小程序实现授权登录
2019/05/15 Javascript
python基础教程之自定义函数介绍
2014/08/29 Python
Python cookbook(数据结构与算法)在字典中将键映射到多个值上的方法
2018/02/18 Python
python爬虫爬取微博评论案例详解
2019/03/27 Python
python GUI库图形界面开发之PyQt5滚动条控件QScrollBar详细使用方法与实例
2020/03/06 Python
Python面向对象魔法方法和单例模块代码实例
2020/03/25 Python
Python基于argparse与ConfigParser库进行入参解析与ini parser
2021/02/02 Python
css3 自定义字体font-face使用介绍
2014/05/14 HTML / CSS
阿迪达斯意大利在线商店:adidas意大利
2016/09/19 全球购物
竞聘演讲稿范文
2014/01/12 职场文书
九年级化学教学反思
2014/01/28 职场文书
工程专业应届生求职信
2014/02/19 职场文书
国庆节活动总结
2014/08/26 职场文书
党员四风剖析材料
2014/08/27 职场文书
表扬信格式模板
2015/05/05 职场文书
工会经费申请报告
2015/05/15 职场文书
您对思维方式了解多少?
2019/12/09 职场文书
Nginx 负载均衡是什么以及该如何配置
2021/03/31 Servers
Python爬虫实战之爬取携程评论
2021/06/02 Python
python字典的元素访问实例详解
2021/07/21 Python