Pytest05-多进程运行用例、失败用例重跑

Pytest04-用例失败控制、标记表达式


高清视频B站链接

1.多进程运行用例

安装pytest-xdist:
pip install pytest-xdist

# 将测试执行发送到多个cpu
# pytest.main(['-n','2','test_many.py'])
# 使用与计算机具有cpu内核一样多的进程
pytest.main(['-n', 'auto', 'test_many.py'])

PS:最新版本的pytest和插件发现跑不起来
已验证可运行版本:
pytest:7.3.1 pytest-xdist 1.31.0

2.重新运行失败用例

pytest-rerunfailures是一个可以使pytest重新运行测试的插件,以消除间歇性故障。
安装要求:
您需要具备以下先决条件才能使用pytest-rerunfailures:
安装
pip install pytest-rerunfailures

Python 3.5,最高3.8或PyPy3
pytest 5.0或更高版本
目前已针对最近的5个次要pytest版本测试了该软件包。如果您使用的是较早版本的pytest,则应考虑更新或使用此软件包的较早版本之一。

重新运行所有测试失败用例

pytest.main([‘–reruns’, ‘3’, ‘test_rerun.py’])

在每次重跑之间,增加一次延迟时间

pytest.main([‘–reruns’, ‘3’,‘–reruns-delay’,‘2’,‘test_rerun.py’])

3. 代码实战案例

代码文件1:test_many.py

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# 作者:扶摇
import pytest
from selenium import webdriver
from time import sleep

def test01():
    driver = webdriver.Chrome()
    sleep(3)
    driver.get("http://www.baidu.com")
    sleep(10)
    assert 1 == 1

def test02():
    driver = webdriver.Chrome()
    sleep(3)
    driver.get("http://www.taobao.com")
    sleep(10)
    assert 1 == 2

def test03():
    assert 1 == 3

def test04():
    assert 1 == 4
def test05():
    assert 1 == 5
def test06():
    assert 1 == 6

def test07():
    assert 1 == 7

def test08():
    assert 1 == 8

if __name__ == '__main__':
    # 并发2个,将测试任务分给2个CPU去同时执行
    # pytest.main(['-n','2','test_many.py'])
    # 使用与计算机CPU内核一样多的线程,进行并发
    pytest.main(['-n','auto','test_many.py'])

代码文件2:test_rerun.py

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# 作者:扶摇
import pytest
from time import sleep

def test01():
    assert 1 == 1

def test02():
    assert 1 == 2

def test03():
    assert 1 == 3

def test04():
    assert 1 == 4
def test05():
    assert 1 == 5
def test06():
    assert 1 == 6

def test07():
    assert 1 == 7

def test08():
    assert 1 == 8

if __name__ == '__main__':
    # pytest.main(['--reruns','3','test_rerun.py'])
    # 在每次失败重跑之前,增加一个延时时间
    pytest.main(['--reruns','3','--reruns-delay','1','test_rerun.py'])

测试技术交流请联系我
在这里插入图片描述
备注优快云扶摇

【学习软件测试/Python自动化测试技术/领取Python自动化测试学习路线图/简历优化】
视频链接:
课程服务介绍

自动化全栈学习路线图讲解

软件测试面试合集

Python编程刷题合集

Pytest入门到实战

Python接口自动化合集

PythonWeb自动化合集

性能测试合集

Jmeter接口自动化测试实战全集

2023GPT探索发现合集

加微信(备注优快云扶摇)即可免费领取下面的自动化测试资料和一份软件测试面试宝典
在这里插入图片描述
在这里插入图片描述

### 实现 Pytest 并发或多线程执行测试用 #### 安装必要的扩展包 为了支持多线程或多进程执行测试用,需先安装 `pytest-parallel` 和 `pytest-xdist` 扩展包。这两个工具可以分别通过pip命令轻松安装: ```bash pip install pytest-parallel pip install pytest-xdist ``` #### 使用 pytest-parallel 进行多线程/多进程测试 一旦完成上述软件包的安装之后,可以通过简单的命令参数配置让Pytest以多线程或并行方式运行测试案[^2]。 对于希望控制更细粒度的任务分配情况,则可利用 `pytest-xdist` 提供的功能选项来指定要启动的工作线程数量以及如何分组执行特定类型的测试任务。如下面这条指令将会开启三个工作节点来进行并发处理,并且只针对标记为`mod`模式下的测试函数进行操作[^3]。 ```bash pytest --numprocesses=auto --max-worker-restart=0 --dist=loadscope -m mod ``` 这里解释几个常用的命令行标志含义: - `--numprocesses`: 设置使用的处理器数目;设置成`auto`可以让系统自动决定最佳值。 - `--max-worker-restart`: 控制当某个子进程中发生错误时最大允许启次数,默认情况下不建议更改此参数除非遇到特殊情况。 - `-n NUM`: 可替代`--numprocesses`,直接指明具体数值如`-n 4`. - `--dist`: 分配策略,有多种选择像`load`,`loadscope`(推荐),它能更好地管理资源减少冲突. - `-m EXPRESSION`: 表达式用于筛选符合条件的testsuite. 另外值得注意的是,在某些复杂的应用场景里(比如涉及到数据库连接池大小限制),还需要额外调整应用程序内部逻辑确保其能够稳定地适应高并发环境的要求[^4]. #### 编写适合并发执行的测试代码 编写测试脚本时应考虑到不同实间的数据隔离性和独立性,避免共享全局变量或其他可能导致竞态条件的因素影响最终结果准确性。同时也要注意清理每次调用后留下的残留状态以便后续其他case正常运作.
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

测试老宅男扶摇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值