大数跨境

pytest 实现多进程与多线程运行

pytest 实现多进程与多线程运行 慧测
2021-07-24
2
导读:关注性能小课,成长不止一点点前言如果想分布式执行用例,用例设计必须遵循以下原则:用例之间都是独立的用例a不要

关注性能小课,成长不止一点点



前言

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

  • 用例之间都是独立的
  • 用例a不要去依赖用例b
  • 用例执行没先后顺序
  • 随机都能执行每个用例都能独立运行成功每个用例都能重复运行,不影响其它用例,这跟就我们平常多个人工测试一样,用例都是独立的,可以随机分配不同人员执行,互相不依赖,用例之间也不存在先后顺序


实现

一、使用 pytest-parallel

//安装: 
pip install pytest-parallel

//常用参数配置:
--workers=n:多进程运行需要加此参数, n是进程数。默认为1
--tests-per-worker=n:多线程需要添加此参数,n是线程数

如果两个参数都配置了,就是进程并行,每个进程最多n个线程,总线程数:进程数*线程数。

注意:在windows上进程数永远为1。需要使用 if name == “main”:,在dos中运行会报错

示例:

import pytest
def test_03(start,open_web1):
    print('测试用例3操作')
def test_04(start,open_web1):
    print('测试用例4操作')

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

特别注意

  • pytest-parallelworkers参数在windows系统下永远是1,在linuxmac下可以取不同值。
  • pytest-parallel加了多线程处理后,最后执行时间是运行时间最长的线程的时间。
  • windows下想用多进程的选pytst-xdist;想用多线程的选pytest-parallel


    END


欢迎加入我们:

扫码加入公开课学习交流群②

已在公开课学习交流群① 

的小朋友请勿重复加群


免费技术支持微信:15712862196


咨询QQ:2657535456

咨询微信号:huice666


慧测公众号


【声明】内容源于网络
0
0
慧测
专注人工智能前沿技术落地企业实战应用
内容 404
粉丝 0
慧测 专注人工智能前沿技术落地企业实战应用
总阅读104
粉丝0
内容404