python-pytest:多进程、多线程执行用例
准备工作:
Python Package
pytest-parallel-0.0.10: windows版本只能是0.0.10
pytest-xdist
这两个包都是基于pytest基础上,实现多进程、多线程执行测试用例
pytest-xdist和pytest-parallel 区别
pytest-xdist: 多进程执行,不支持线程执行
pytest-parallel:多进程、多线程执行;windows操作系统只支持一个进程,可多个线程;max和linux可多进程
这两个都可以实现并发或并行执行用例,缩短测试时间
进程和线程的区别
进程:点击打开qq,就启动了qq的进程
线程:在qq进程下,会有q群或还有会话,启动了线程
一个线程只有一个主进程,一个进程有多个线程
参数介绍
使用pytest-xdist和pytest-parllel传入命令行执行,看到的效果,都是同时启动给定的参数
如:
pytest-xdist: 配置参数 ‘-n’,’2’ 同时启动两个进程,执行
Pytest-parllel: '--workers=1', '--tests-per-worker=2',一个进程,启动2个线程执行
--workers 2 --tests-per-worker 4:2个进程并行,且每个进程最多4个线程运行,即总共最多8个线程运行
例子
pytest: 使用多线程执行用例,pytest收集用例数:4,设置线程数:4,每个test用例调用task(),默认等待10s,4个线程同时执行,预计时间:约10s
--- 多线程.py文件
import pytest
from concurrent.futures import ThreadPoolExecutor,as_completed
import threading def task():
logging.info(f"线程:{threading.currentThread().name}")
time.sleep(10) class TestTask():
def test_task1(self):
task()
return "task1" def test_task2(self):
task()
return "task2" def test_task3(self):
task()
return "task3" def test_task4(self):
task()
return "task4" if __name__ == '__main__':
pytest.main(['-v', '-s', '-q', '多线程.py', '--tests-per-worker=4'])
执行结果:
Pytest-parallel遇到的问题:
问题1.
启动报错,
AttributeError:Can'tpickle local object
'pytest_addoption.<locals>.label_type.<locals>.a_label_type'
解决方法:
Windows只支持版本0.0.10,卸载,重新安装
Pip install Pytest-parallel==.0.0.10
python-pytest使用(4)-多线程多进程运行_pytest-xdist、pytest-parallel区别及命令介绍
Pytest-xdist:只支持多进程执行
问题1.
输出到控制台的日志中的中文为乱码,这个暂时无法解决;输出到文件文件中的中文写入正常;
问题2.
执行完成后,结合pytestreport,一个进程完成后,就会触发生成一个报告;其他进程也完成后,也会触发生成报告,导致跑一个用例集,会生成多个分散的报告;
原因:
pytestreport: 重写了钩子函数pytest_session_finish,这个函数,在一个会话结束后,就会触发生成报告;使用多进程,打开两个浏览器,一个浏览器结束,代表进程结束,session完成,就会触发
解决方法:
使用allure生成测试报告,allure会将所有测试结果收集,最后再生成;或者是用pytest-parallel,不过其它使用的方法,可能出现问题
python-pytest:多进程、多线程执行用例的更多相关文章
- pytest多进程/多线程执行测试用例
前言: 实际项目中的用例数量会非常多,几百上千:如果采用单进程串行执行的话会非常耗费时间.假设每条用例耗时2s,1000条就需要2000s $\approx$ 33min:还要加上用例加载.测试前/后 ...
- selenium+python自动化90-unittest多线程执行用例
前言 假设执行一条脚本(.py)用例一分钟,那么100个脚本需要100分钟,当你的用例达到一千条时需要1000分钟,也就是16个多小时... 那么如何并行运行多个.py的脚本,节省时间呢?这就用到多线 ...
- Python-Unittest多线程执行用例
前言 假设执行一条脚本(.py)用例一分钟,那么100个脚本需要100分钟,当你的用例达到一千条时需要1000分钟,也就是16个多小时... 那么如何并行运行多个.py的脚本,节省时间呢?这就用到多线 ...
- python--selenium多线程执行用例实例/执行多个用例
python--selenium多线程执行用例实例/执行多个用例 我们在做selenium测试的时候呢,经常会碰到一些需要执行多个用例的情况,也就是多线 程执行py程序,我们前面讲过单个的py用例怎么 ...
- python采用 多进程/多线程/协程 写爬虫以及性能对比,牛逼的分分钟就将一个网站爬下来!
首先我们来了解下python中的进程,线程以及协程! 从计算机硬件角度: 计算机的核心是CPU,承担了所有的计算任务.一个CPU,在一个时间切片里只能运行一个程序. 从操作系统的角度: 进程和线程,都 ...
- Pytest 多进程并发执行
在用例执行的过程中,想要用多进程并发执行测试用例,如何实现呢,其实很简单,pytest有对应的模块,安装方式. 安装 pip install pytest-xdist 使用 pytest test_d ...
- selenium+python-unittest多线程执行用例
前言 假设执行一条脚本(.py)用例一分钟,那么100个脚本需要100分钟,当你的用例达到一千条时需要1000分钟,也就是16个多小时...那么如何并行运行多个.py的脚本,节省时间呢?这就用到多线程 ...
- python自动化-unittest批量执行用例(discover)
前言 我们在写用例的时候,单个脚本的用例好执行,那么多个脚本的时候,如何批量执行呢?这时候就需要用到unittet里面的discover方法来加载用例了. 加载用例后,用unittest里面的Text ...
- 也说性能测试,顺便说python的多进程+多线程、协程
最近需要一个web系统进行接口性能测试,这里顺便说一下性能测试的步骤吧,大概如下 一.分析接口频率 根据系统的复杂程度,接口的数量有多有少,应该优先对那些频率高,数据库操作频繁的接口进行性能测试,所以 ...
- unittest多线程执行用例
前言 假设执行一条脚本(.py)用例一分钟,那么100个脚本需要100分钟,当你的用例达到一千条时需要1000分钟,也就是16个多小时... 那么如何并行运行多个.py的脚本,节省时间呢?这就用到多线 ...
随机推荐
- Python 潮流周刊#48:Python 3.14 的发布计划
本周刊由 Python猫 出品,精心筛选国内外的 250+ 信息源,为你挑选最值得分享的文章.教程.开源项目.软件工具.播客和视频.热门话题等内容.愿景:帮助所有读者精进 Python 技术,并增长职 ...
- java引入jep实现四则运算包含负数且规范两位小数
1.在pom中引入依赖 <!--四则运算--> <dependency> <groupId>jep</groupId> <artifactId&g ...
- 十、Doris操作参考手册
1.SQL参考 1.1 用户账户管理 1.2 集群管理 1.3 DDL 1.4 DML 2.函数参考 2.1 日期函数 2.2 字符串函数 2.3 聚合函数 2.4 Cast转换函数 ...
- SQL Server实战四:查询数据库的数据
本文介绍基于Microsoft SQL Server软件,实现数据库表中多种数据查询方法的具体操作. 目录 1 指定列或全部列查询--查询S表学生记录 2 指定列或全部列查询--查询学生姓名与出生 ...
- Canvas简历编辑器-我的剪贴板里究竟有什么数据
Canvas图形编辑器-我的剪贴板里究竟有什么数据 在这里我们先来聊聊我们究竟应该如何操作剪贴板,也就是我们在浏览器的复制粘贴事件,并且在此基础上聊聊我们在Canvas图形编辑器中应该如何控制焦点以及 ...
- InternLM2 Demo实操-书生浦语大模型实战营第二期第2节作业&大语言模型3
大语言模型-3.InternLM2 Demo实操 书生浦语大模型实战营第二期第二节作业 本文包括第二期实战营的第2课作业的相关内容.本来是想在学习笔记中给InetrnLM官方教程做做补充的,没想到官方 ...
- chgrp chown
chgrp 用来改变文件所属群组,如果要改变的群组不在/etc/group里面,将会报错. chown 用来改变文件的所有者,如果改变的所有者便在/etc/passwd里面,将会报错. 需要注意的是c ...
- fastposter v2.7.1 紧急发布 电商海报编辑器
fastposter v2.7.1 紧急发布 电商海报编辑器 fastposter海报生成器,电商海报编辑器,电商海报设计器,fast快速生成海报 海报制作 海报开发.二维码海报,图片海报,分享海报, ...
- cesium常见问题和解决
- linux常用关机/重启命令:shutdown,init 0,init 6
目录 一.使用shutdown关机,重启,定时关机 二.使用init关机/重启 一.使用shutdown关机,重启,定时关机 1.设置计算机10分钟之后关机 [root@node5 ~]# shutd ...