Java多进程测试用例_Pytest xdist/Pytest并行多进程执行测试用例,pytestxdistpytestparallel...

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

1.用例之间都是独立的,

2.用例a不要去依赖用例b

3.用例执行没先后顺序,

4.随机都能执行每个用例都能独立运行成功每个用例都能重复运行,不影响其它用例

这跟就我们平常多个人工测试一样,用例都是独立的,可以随机分配不同人员执行,互相不依赖,用例之间也不存在先后顺序

pytest-xdist/pytest-parallel安装及查看是否安装

安装

pip install pytest-xdist

pip install pytest-parallel

查看

pip show pytest-xdist

pytest-xdist

多cpu并行执行用例,直接加个-n参数即可,后面num参数就是并行数量,比如num设置为3

-n auto 自动侦测系统里的CPU数目

-n num 指定运行测试的处理器进程数

> pytest -n 3

正常运行需要消耗时间:7.12 seconds

E:\YOYO\web_conf_py>pytest

============================= test session starts =============================

platform win32 -- Python 3.6.0, pytest-3.6.3, py-1.5.4, pluggy-0.6.0

rootdir: E:\YOYO\web_conf_py, inifile:

plugins: xdist-1.23.2, metadata-1.7.0, html-1.19.0, forked-0.2

collected 7 items

baidu\test_1_baidu.py .. [ 28%]

baidu\test_2.py .. [ 57%]

blog\test_2_blog.py ... [100%]

========================== 7 passed in 7.12 seconds ===========================

设置并行运行数量为3,消耗时间:3.64 seconds,大大的缩短了用例时间

E:\YOYO\web_conf_py>pytest -n 3

============================= test session starts =============================

platform win32 -- Python 3.6.0, pytest-3.6.3, py-1.5.4, pluggy-0.6.0

rootdir: E:\YOYO\web_conf_py, inifile:

plugins: xdist-1.23.2, metadata-1.7.0, html-1.19.0, forked-0.2

gw0 [7] / gw1 [7] / gw2 [7] #####代表启动进程数

scheduling tests via LoadScheduling

....... [100%]

========================== 7 passed in 3.64 seconds ===========================

使用pytest-xdist插件也能生成html报告,完美支持pytest-html插件

pytest -n 3 --html=report.html --self-contained-html

对比说明:

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个进程运行

p

ytest 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

扩展:

重复执行用例:

使用

--count

命令行选项指定要运行测试用例和测试次数

py.test --count=10 test_file.py

pytest baidu/test_1_baidu.py -s --count=5

会第一个用例运行

5

次 然后运行第二个用例5次 如果希望 第一个用例 第二个用例这样按顺序重复

5

次 要用到

--repeat-scope

pytest tearr_function.py -s --count=5 --repeat-scope=session

如果要在代码中标记要重复多次的用例 可以使用

@pytest.mark.repeat(count)

这样执行用例时候,就不用带上

--count

参数,只针对

test_02

重复执行

5

pytest tearr_function.py -s

果您正在尝试诊断间歇性故障,那么一遍又一遍地运行相同的测试直到失败是有用的。您可以将

pytest

-x

选项与

pytest-repeat

结合使用,以强制测试运行器在第一次失败时停止。例如:

> py.test --count=1000 -x test_file.py

这将尝试运行

test_file.py

1000次,但一旦发生故障就会停止

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/432918.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【转】宇宙的基本法则

开宗明义,“复制因子→复制→成长→自然选择”法则是支配宇宙的基本法则,为了方便,我称其为“B法则” 。所谓复制,就是在一 定条件下一个复制因子一旦形成,就会一直不停地复制自身,不断成长,比…

java jni librtmp_librtmp 编译集成

RTMPDumpRTMPDump 是一个用来处理RTMP流媒体的开源工具包。它能够单独使用进行RTMP的通信,也可以集成到FFmpeg中通过FFmpeg接口来使用RTMPDump。在Android中可以直接借助NDK在JNI层调用RTMPDump来完成RTMP通信。在根目录下提供了一个Makefile与一些.c源文件。这里的…

基于Z-Wave无线技术的指纹锁系统设计

http://www.chinaaet.com/article/218940 摘 要: 结合新兴的低功耗的Z-Wave短距无线通信技术,设计一种应用于酒店的智能指纹锁无线管理与控制系统。该系统的门锁硬件电路包括主控制器S3C2440、指纹采集模块、电机驱动模块及ZM3102无线模块,…

Hibernate一对一关联------主键关联(亲测成功)

1、创建两个实体(Company.java和Login.java)代码如下: 1 package wck.stu.vo.onetoonein;2 3 public class Company {4 private String id "";5 6 private String companyName "";7 8 private Str…

angularjs mysql_AngularJS SQL

AngularJS SQL在前面章节中的代码也可以用于读取数据库中的数据。使用 PHP 从 MySQL 中获取数据AngularJS 实例{{ x.Name }}{{ x.Country }}function customersController($scope,$http) {var site "http://www.w3cschool.cn";var page "/statics/demosource/…

INTEL和AMD两大巨头的前身

仙童半导体公司,曾经是世界上最大、最富创新精神和最令人振奋的半导体生产企业,为硅谷的成长奠定了坚实的基础。更重要的是,这家公司还为硅谷孕育了成千上万的技术人才和管理人才,它不愧是电子、电脑业界的“西点军校”&#xff0…

servlet加载资源两种方式-内外(初始化参数).properties文件

在servlet中加载资源很方便,通过servletContext,这个是web服务器加载完web项目返回的参数之一,还有servletConfig,得到web项目一些配置信息,request和response,等等,我们现在用的这个servletContext也叫做C…

java 登录编程_Java编程通过session访问需要登录的页面

使用Java访问一般网页,进行数据抓取等比较简单,直接用URL和URLConnection连接所需要的网站地址即可,然后对返回的html源码进行处理分析,获取感兴趣的内容。不过如果是需要登录后才能访问的网页就不能直接传入网站url进行连接了&am…

ZDB5202烧成控制器方法

1.跳线和ZDB5202的安装位置如下图 黄色开关设置为off状态,就是靠近班子里面的一方。 2.打开z-wave programmer软件,设置如下图,注意烧写接口为spi,烧写的时候会提示的。选yes是uart,选no是spi。…

判断一个数是不是整数

<?php //判断一个数是整数吗&#xff1f; function check($num){if($num>1){return (check($num-1));//采用递归&#xff0c;一直减到0到1之间}elseif($num<0){return(check((-1)*$num-1));//采用递归&#xff0c;一直减到0到1之间}else{if(($num>0) && (…

z-wave问题汇总

1. 如果发送的串口数据的checksum不对的话&#xff0c;z-wave结点会响应一个0x15。 2. 5202&#xff0c;5101既可以做控制也可以做设备端。他们都是外置天线&#xff0c;距离会好一点。 另外5202和5101也可以做路由结点。 5304只能做控制端&#xff0c;5304的天线是…

java enumeration 排序_Java如何对java.util.Enumeration进行排序?

在此代码段中&#xff0c;您将看到如何对Enumeration对象的内容进行排序。我们首先创建一个随机数并将其存储在中Vector。我们用这些数字&#xff0c;并创建和Enumeration调用对象Vector的elements()方法。我们把它转换为java.util.List&#xff0c;然后排序的内容List使用Coll…

controller配对与接触配对

1&#xff0e; 当点击添加按钮后 以上数据&#xff0c;都是z-wave主控制器与pc controller软件的交换。 2&#xff0e; 当连续点击从结点的配对按钮后。 3&#xff0e; 当点击remove按钮后 4&#xff0e; 当连续点击从结点接触配对按钮后

php可以调用windowsapi吗_2.如何调用WindowsApi

2.如何调用WindowsApi在上一篇章节中 很不专业的介绍了一下WindowsApi 如果你本身就知道 那你也压根不用看 如果你本身就不知道 就算我说的再多 估计你也觉得是多余 所以还是来点实际的首先 在C#中想要调用那些Api(当然不一定是Windows提供的Api) 你得添加一个引用&#xff1a;…

ubuntu 14.04 ssh

使用gedit修改配置文件"/etc/ssh/sshd_config" 打开"终端窗口"&#xff0c;输入"sudo gedit /etc/ssh/sshd_config"-->回车-->把配置文件中的"PermitRootLogin without-password"加一个"#"号,把它注释掉-->再增加一…

php获取跳转后url,php获取跳转后真实url的方法

php获取跳转后真实url的方法发布时间&#xff1a;2020-08-01 14:17:56来源&#xff1a;亿速云阅读&#xff1a;68作者&#xff1a;清晨这篇文章主要介绍php获取跳转后真实url的方法&#xff0c;文中介绍的非常详细&#xff0c;具有一定的参考价值&#xff0c;感兴趣的小伙伴们一…

ERROR 1044 (42000): Access denied for user ''@'localhost' to database

用mysqld_saft --skip-grant-tables&启动mysql 然后修改mysql数据库中的user表 将create_priv权限改为Y

php后台无法登入,typecho 后台无法登陆

按照操作说明安装好TYPECHO但是登陆的时候无法进入后台错误提示Warning: include(): Failed opening menu.php for inclusion (include_path.:/opt/php-5.5/pear:/home/u417324844/public_html/Blog/var:/home/u417324844/public_html/Blog/usr/plugins) in /home/u417324844/p…

三、多线程与上厕所

世界上最让人坐立不安&#xff0c;最知道心急的时候&#xff0c;是拿着手纸捂着肚子而厕所里有人的时候。 现在我们有两个人&#xff0c;一个在厕所里&#xff0c;一个在厕所外。 厕所外的人一直问“你好了没&#xff1f;” while&#xff08;厕所里的人没出来&#xff09;{说话…

Ubuntu 14.04 为 root 帐号开启 SSH 登录

1. 修改 root 密码 sudo passwd root2. 以其他账户登录&#xff0c;通过 sudo nano 修改 /etc/ssh/sshd_config : xxxubuntu14:~$ su - root Password: rootubuntu14:~# vi /etc/ssh/sshd_config3. 注释掉 #PermitRootLogin without-password&#xff0c;添加 PermitRootLogi…