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的脚本,节省时间呢?这就用到多线 ...
随机推荐
- 2018-4-15-WPF-在-Alt+Tab-隐藏窗口
title author date CreateTime categories WPF 在 Alt+Tab 隐藏窗口 lindexi 2018-04-15 10:13:40 +0800 2018-3- ...
- ES_CCS/R(三):跨集群复制 Cross-cluster replication(CCR)
跨集群复制(CCR)功能支持将远程集群中的索引复制到本地集群. 可以在一些常见的生产用例中使用此功能: 灾难恢复(DR)/高可用性(HA):如果主群集发生故障,则进行灾难恢复. 辅助群集可以用作热备份 ...
- 二:飞凌嵌入式FCU1201
场景一 充电基础设施 场景二 现代机械加工对复杂化.精密化.大型化以及自动化设备的要求不断提高,数控机床设备日益得到广泛应用.数控机床设备对加工质量及效率起着关键乃至核心作用,其造价往往相当昂贵.因此 ...
- C#的基于.net framework的Winform编程 - 编程手把手系列文章
对于C#,笔者最早接触的是ASP.NET里的开发,后面对Winform程序也有一定的开发,但是真正理解和重新编码是这些年的事,在我的C#标签里有一些例子,记录了winform程序开发的一些功能.此文只 ...
- 【Oracle】Oracle数据库多实例安装
需求:因为需要从RAC的多实例迁移至单虚拟机的多实例.因此,简要概述一下,如何安装数据库的多实例. 不管是Oracle 11g还是10g的多实例,其基本思路都是一致的. 1.调用dbca 在root账 ...
- sqli-labs-master 第二,三,四关
第二关: 判断注入类型:http://192.168.65.130/sqli-labs-master/Less-2/?id=1 --+ 原因:$sql="SELECT * FROM user ...
- 安装XMind如何安装到指定目录
在Win10系统上安装XMind,发现安装完成之后,XMind被安装到了C盘.由于C盘是系统盘,这让人很不爽.XMind在安装过程中也没有提供安装路径选择,而是点击安装程序之后,就一路开始安装到C盘. ...
- ansible系列(33)--ansible实战之部署WEB集群架构(3)
目录 1. 应用环境部署 1.1 nginx编译部署 1.2 PHP编译部署 1.3 mariadb二级制部署 1.4 redis部署 1.5 NFS部署 1.6 keepalived+LVS部署 1 ...
- Go-Zero定义API实战:探索API语法规范与最佳实践(五)
前言 上一篇文章带你实现了Go-Zero模板定制化,本文将继续分享如何使用GO-ZERO进行业务开发. 通过编写API层,我们能够对外进行接口的暴露,因此学习规范的API层编写姿势是很重要的. 通过本 ...
- salesforce零基础学习(一百三十九)Admin篇之Begins/Contains/Starts With 是否区分大小写
本篇参考: https://help.salesforce.com/s/articleView?id=sf.customize_functions_begins.htm&type=5 http ...