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

 更新时间:2022年07月15日 11:09:14   作者:好好先生&Mr.Li  
本文主要介绍了pytest实现多进程与多线程运行超好用的插件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

前言

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

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-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 多进程与多线程运行插件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • matplotlib图例、标签、坐标轴刻度的字体设置方式

    matplotlib图例、标签、坐标轴刻度的字体设置方式

    这篇文章主要介绍了matplotlib图例、标签、坐标轴刻度的字体设置方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • python清理子进程机制剖析

    python清理子进程机制剖析

    python的机制会自动清理已经完成任务的子进程的,下面通过本文给大家分享python清理子进程机制剖析,需要的朋友参考下吧
    2017-11-11
  • 详解Python编程中time模块的使用

    详解Python编程中time模块的使用

    这篇文章主要介绍了详解Python编程中time模块的使用,是Python入门学习中的基础知识,需要的朋友可以参考下
    2015-11-11
  • python爬取微信公众号文章

    python爬取微信公众号文章

    这篇文章主要为大家详细介绍了python爬虫实战案例,微信公众号文章的爬取,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-08-08
  • python中validators库的使用方法详解

    python中validators库的使用方法详解

    这篇文章主要介绍了python中validators库的使用方法详解,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-09-09
  • Python获取文件所在目录和文件名的方法

    Python获取文件所在目录和文件名的方法

    下面小编就为大家带来一篇Python获取文件所在目录和文件名的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-01-01
  • Python数据结构之双向链表的定义与使用方法示例

    Python数据结构之双向链表的定义与使用方法示例

    这篇文章主要介绍了Python数据结构之双向链表的定义与使用方法,结合实例形式分析了Python双向链表的概念、原理、使用方法及相关注意事项,需要的朋友可以参考下
    2018-01-01
  • python getpass模块用法及实例详解

    python getpass模块用法及实例详解

    这篇文章主要介绍了python getpass模块用法及实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • 17条提高工作效率的Python技巧分享

    17条提高工作效率的Python技巧分享

    这篇文章主要介绍了17条提高工作效率的Python技巧分享,掌握这些Python技巧可以让我们的生活更加轻松,本文就日常中经常使用到的Python技巧进行归纳总结,对于常用的17条技巧均给出了完整的代码示例和具体讲解,需要的朋友可以参考下
    2022-01-01
  • Python实现利用最大公约数求三个正整数的最小公倍数示例

    Python实现利用最大公约数求三个正整数的最小公倍数示例

    这篇文章主要介绍了Python实现利用最大公约数求三个正整数的最小公倍数,涉及Python数学运算相关操作技巧,需要的朋友可以参考下
    2017-09-09

最新评论