Pytest----失败N次后停止执行

简介: Pytest----失败N次后停止执行

1 默认情况下,所有用例都会执行完成

测试脚本代码如下:

def test_1():
    print("in test_1")
    assert 1==1

def test_2():
    print("in test_2")
    assert 1==2

def test_3():
    print("in test_3")
    assert 1==1

def test_4():
    print("in test_4")
    assert 1==2

使用pytest 命令执行结果如下:即,四个用例全部执行

G:\redrose2100\src\demo>pytest
========================================================================== test session starts ===========================================================================
platform win32 -- Python 3.9.5, pytest-6.2.4, py-1.10.0, pluggy-0.13.1
rootdir: G:\redrose2100\src\demo
plugins: rerunfailures-10.0
collected 4 items                                                                                                                                                         

test_example.py .F.F                                                                                                                                                [100%]

================================================================================ FAILURES ================================================================================
_________________________________________________________________________________ test_2 _________________________________________________________________________________

    def test_2():
        print("in test_2")
>       assert 1==2
E       assert 1 == 2

test_example.py:8: AssertionError
-------------------------------------------------------------------------- Captured stdout call --------------------------------------------------------------------------
in test_2
_________________________________________________________________________________ test_4 _________________________________________________________________________________

    def test_4():
        print("in test_4")
>       assert 1==2
E       assert 1 == 2

test_example.py:16: AssertionError
-------------------------------------------------------------------------- Captured stdout call --------------------------------------------------------------------------
in test_4
======================================================================== short test summary info =========================================================================
FAILED test_example.py::test_2 - assert 1 == 2
FAILED test_example.py::test_4 - assert 1 == 2
====================================================================== 2 failed, 2 passed in 0.13s =======================================================================

G:\redrose2100\src\demo>
  • 当希望在有用例失败的情况下,即停止执行后续其他用例,使用 pytest -x即可

如下,使用 pytest -x 执行的结果,即执行到第二个用例是断言错误,因此停止不在执行后续的两个用例

G:\redrose2100\src\demo>pytest -x
========================================================================== test session starts ===========================================================================
platform win32 -- Python 3.9.5, pytest-6.2.4, py-1.10.0, pluggy-0.13.1
rootdir: G:\redrose2100\src\demo
plugins: rerunfailures-10.0
collected 4 items                                                                                                                                                         

test_example.py .F

================================================================================ FAILURES ================================================================================
_________________________________________________________________________________ test_2 _________________________________________________________________________________

    def test_2():
        print("in test_2")
>       assert 1==2
E       assert 1 == 2

test_example.py:8: AssertionError
-------------------------------------------------------------------------- Captured stdout call --------------------------------------------------------------------------
in test_2
======================================================================== short test summary info =========================================================================
FAILED test_example.py::test_2 - assert 1 == 2
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! stopping after 1 failures !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
====================================================================== 1 failed, 1 passed in 0.12s =======================================================================

G:\redrose2100\src\demo>

2 通过 pytest --maxfail 可以控制做多失败几次,即停止运行

用例内容再增加两个,如下:

def test_1():
    print("in test_1")
    assert 1==1

def test_2():
    print("in test_2")
    assert 1==2

def test_3():
    print("in test_3")
    assert 1==1

def test_4():
    print("in test_4")
    assert 1==2

def test_5():
    print("in test_5")
    assert 1==1

def test_6():
    print("in test_4")
    assert 1==2

使用 pytest --maxfail 2 即最多遇到两次失败用例,则停止执行后面其他用例,此场景主要用于比如当环境等因素出现异常时,可以设置比如正常情况下几乎所有用例均没有问题,但是当出现比如N次用例失败时,基本可以说明当前环境有问题了,此种情景下,此参数就很有用了

G:\redrose2100\src\demo>pytest --maxfail 2
========================================================================== test session starts ===========================================================================
platform win32 -- Python 3.9.5, pytest-6.2.4, py-1.10.0, pluggy-0.13.1
rootdir: G:\redrose2100\src\demo
plugins: rerunfailures-10.0
collected 6 items                                                                                                                                                         

test_example.py .F.F

================================================================================ FAILURES ================================================================================
_________________________________________________________________________________ test_2 _________________________________________________________________________________

    def test_2():
        print("in test_2")
>       assert 1==2
E       assert 1 == 2

test_example.py:8: AssertionError
-------------------------------------------------------------------------- Captured stdout call --------------------------------------------------------------------------
in test_2
_________________________________________________________________________________ test_4 _________________________________________________________________________________

    def test_4():
        print("in test_4")
>       assert 1==2
E       assert 1 == 2

test_example.py:16: AssertionError
-------------------------------------------------------------------------- Captured stdout call --------------------------------------------------------------------------
in test_4
======================================================================== short test summary info =========================================================================
FAILED test_example.py::test_2 - assert 1 == 2
FAILED test_example.py::test_4 - assert 1 == 2
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! stopping after 2 failures !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
====================================================================== 2 failed, 2 passed in 0.14s =======================================================================

G:\redrose2100\src\demo>
目录
相关文章
|
7月前
|
缓存 负载均衡 API
深入解析电商支付API的性能瓶颈与解决方案
在电商快速发展的当下,支付API的性能直接影响用户体验与交易成功率。本文深入分析支付API在高并发下的性能瓶颈,并提供包括CDN加速、异步处理、缓存优化、数据库索引、负载均衡等在内的系统性解决方案,助力开发者提升支付效率,保障交易流畅稳定。
163 1
|
6月前
|
数据挖掘 数据处理 C++
Python Lambda:从入门到实战的轻量级函数指南
本文通过10个典型场景,详解Python中Lambda匿名函数的用法。Lambda适用于数据处理、排序、条件筛选、事件绑定等简洁逻辑,能提升代码简洁性和开发效率。同时提醒避免在复杂逻辑中过度使用。掌握Lambda,助你写出更高效的Python代码。
359 0
|
7月前
|
人工智能 数据挖掘 API
Kimi K2开源炸场,1万亿参数碾压GPT-4.1,成本仅Claude 4的1/5!
月之暗面开源的万亿参数大模型Kimi K2引发行业震动,48小时内即登顶OpenRouter API调用榜,GitHub项目激增200%。该模型在代码生成、Agent任务及中文创作上超越Claude 4,标志着中国大模型首次在三大核心能力上达到全球顶尖水平。
|
7月前
|
C语言 图形学 Windows
Windows下安装和配置GTK4(基于CLion)
本文介绍了作者选择GTK作为C语言图形库的原因,包括代码简洁、控件丰富和界面美观,并分享了在Windows环境下通过MSYS2安装GTK4及在CLion中配置开发环境的详细步骤。
769 0
|
9月前
|
XML Java Android开发
Android 动画之帧动画 + 补间动画 + 属性动画
本文介绍了Android开发中的三种动画类型:帧动画、补间动画和属性动画。帧动画通过依次播放一系列静态图片实现动态效果,支持Java代码与XML两种实现方式。补间动画基于起始和结束位置自动生成过渡效果,涵盖透明度、位移、旋转、缩放及组合动画等多种形式,并可搭配插值器优化动画过程。属性动画则通过改变对象属性实现动画,支持透明度、位移、旋转、缩放及组合动画,灵活性更高且适用于更复杂的场景。文中提供了详细的代码示例,帮助开发者快速上手。
466 15
|
安全 Linux 开发者
⭐⭐⭐⭐⭐Linux C/C++ 进程崩溃诊断以及有效数据收集:解锁代码问题快速定位与修复的方法
⭐⭐⭐⭐⭐Linux C/C++ 进程崩溃诊断以及有效数据收集:解锁代码问题快速定位与修复的方法
975 1
|
监控 数据挖掘 Linux
在Linux中,如何进行网络性能的模拟测试?
在Linux中,如何进行网络性能的模拟测试?
|
安全 前端开发 中间件
Python面试题:Django Web框架基础与进阶
【4月更文挑战第17天】本文详细梳理了Django面试中常考的基础和进阶问题,包括MTV架构、ORM、数据库迁移、视图模板、中间件、信号、表单验证、用户认证授权等,并指出易错点及规避策略。提供代码示例展示模型和视图的实现,助力开发者在面试中脱颖而出。
846 12
|
测试技术
Fiddler如何越权访问登录成功的页面?一文讲清
Fiddler如何越权访问登录成功的页面?一文讲清
458 0
|
消息中间件 监控 Java
系统稳定性保障设计总结和思考
系统稳定性保障设计总结和思考
849 0