章节目录:
- 一、失败重跑插件
- 1.1 概述
- 1.2 安装
- 1.3 参数讲解
- 1.4 代码示例
- 二、重复执行插件
- 2.1 概述
- 2.2 安装
- 2.3 代码示例
- 三、结束语
一、失败重跑插件
1.1 概述
- pytest-rerunfailures 是一个用于 pytest 测试框架的插件,它提供了重新运行失败的测试用例的功能。
- 当测试用例失败时,pytest-rerunfailures 可以自动重新运行失败的测试用例,以便给予测试用例更多的机会通过。
- 兼容版本:python3 、pytest 5.0 及以上。
1.2 安装
- 使用国内镜像源安装:
# 清华大学镜像源。
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple pytest-rerunfailures# 阿里云镜像源。
pip3 install -i https://mirrors.aliyun.com/pypi/simple pytest-rerunfailures# 华为云镜像源。
pip3 install -i https://mirrors.huaweicloud.com/repository/pypi/simple pytest-rerunfailures
1.3 参数讲解
reruns
:这个参数指定了测试函数在失败时重试的次数。reruns_delay
:这个参数指定了每次重试之间的时间间隔(以秒为单位)。reruns_filter
:可以使用reruns_filter
参数来指定一个函数,用于动态决定是否应该重试运行测试函数。该函数接受测试函数对象作为参数,并返回一个布尔值,指示是否应该进行重试。reruns_errors
:可以使用reruns_errors
参数来指定一个异常类型或元组,表示哪些异常类型应该触发重试。只有在捕获到指定的异常类型时,才会触发重试。reruns_incremental
:可以使用reruns_incremental
参数来启用增量模式。在增量模式下,重试的次数将逐渐增加,直到测试函数通过或达到最大重试次数。reruns_on_skips
:可以使用reruns_on_skips
参数来指定是否在跳过测试时也进行重试。如果设置为True
,则在跳过测试时也会触发重试。
1.4 代码示例
@pytest.mark.flaky()
插件提供的装饰器,用于在测试函数上标记重试行为:
import randomimport pytestdef get_random():# 0 ~ 101 之间的随机整数。return random.randint(0, 101)# 最多重试 5 次,每次间隔 2 s。
@pytest.mark.flaky(reruns=5, reruns_delay=2)
def test_example_1():r = get_random()print(f"num={r}")# 随机数大于等于70才会通过断言,否则进入重试。assert r >= 70# num=42# num=69# num=86# ========================= 1 passed, 2 rerun in 4.13s ==========================# 如果遇到 ZeroDivisionError 就重试。
@pytest.mark.flaky(reruns_errors="ZeroDivisionError")
def test_example_2():num = 10 / 0assert 5 > num# RERUN# FAILED
二、重复执行插件
2.1 概述
- pytest-repeat 是一个用于 pytest 的插件,它允许你在运行测试时重复运行特定的测试用例。
- 通过重复运行测试用例,你可以增加测试的可靠性,尤其是对于那些具有随机性或不确定性的测试场景。
2.2 安装
- 使用阿里云镜像源安装
pip install -i https://mirrors.aliyun.com/pypi/simple/ pytest-repeat
2.3 代码示例
@pytest.mark.repeat(count)
可以将某些测试用例标记为执行重复多次:
import pytest@pytest.mark.repeat(3)
def test_repeat():print("测试用例执行")assert True# [ 33%]测试用例执行# [ 66%]测试用例执行# [100%]测试用例执行
三、结束语
“-------怕什么真理无穷,进一寸有一寸的欢喜。”
微信公众号搜索:饺子泡牛奶。