• Pytest----如何通过pytest.ini配置不显示告警或将告警报错


    【原文链接】Pytest----如何通过pytest.ini配置不显示告警或将告警报错

    首先,看如下测试脚本,即在两个测试函数中人为抛出两个告警。

    import warnings
    
    def test_demo1():
        print("in test_demo1 ...")
        warnings.warn(SyntaxWarning("warning,used to test..."))
        assert 1==1
    
    def test_demo2():
        print("in test_demo2 ...")
        warnings.warn(UserWarning("warning,used to demo..."))
        assert 1==1
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    执行结果如下,即显示出两条告警信息。

    (demo-HCIhX0Hq) E:\demo>pytest -s
    =================== test session starts ===================
    platform win32 -- Python 3.7.9, pytest-7.2.0, pluggy-1.0.0
    rootdir: E:\demo, configfile: pytest.ini
    plugins: assume-2.4.3, rerunfailures-10.2
    collected 2 items
    
    test_demo.py in test_demo1 ...
    .in test_demo2 ...
    .
    
    ==================== warnings summary =====================
    test_demo.py::test_demo1
      E:\demo\test_demo.py:5: SyntaxWarning: warning,used to test...
        warnings.warn(SyntaxWarning("warning,used to test..."))
    
    test_demo.py::test_demo2
      E:\demo\test_demo.py:10: UserWarning: warning,used to demo...
        warnings.warn(UserWarning("warning,used to demo..."))
    
    -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
    ============== 2 passed, 2 warnings in 0.03s ==============
    
    (demo-HCIhX0Hq) E:\demo>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    不论通过命令行的方式还是装饰器的方式,其实都可以在pytest.ini配置文件中配置,比如如下创建pytest.ini,编写如下代码,即指定filterwarnings可将所有的告警忽略不显示。

    [pytest]
    filterwarnings =
        ignore
    
    • 1
    • 2
    • 3

    执行结果如下,即此时不再打印告警信息。

    (demo-HCIhX0Hq) E:\demo>pytest -s
    =================== test session starts ===================
    platform win32 -- Python 3.7.9, pytest-7.2.0, pluggy-1.0.0
    rootdir: E:\demo, configfile: pytest.ini
    plugins: assume-2.4.3, rerunfailures-10.2
    collected 2 items
    
    test_demo.py in test_demo1 ...
    .in test_demo2 ...
    .
    
    ==================== 2 passed in 0.02s ====================
    
    (demo-HCIhX0Hq) E:\demo>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    同样若指定filterwarnings为error,则可将所有的告警转换为报错。

    [pytest]
    filterwarnings =
        error
    	执行结果如下,即此时显示有两个失败,失败的原因则为产生的告警。
    (demo-HCIhX0Hq) E:\demo>pytest -s
    =================== test session starts ===================
    platform win32 -- Python 3.7.9, pytest-7.2.0, pluggy-1.0.0
    rootdir: E:\demo, configfile: pytest.ini
    plugins: assume-2.4.3, rerunfailures-10.2
    collected 2 items
    
    test_demo.py in test_demo1 ...
    Fin test_demo2 ...
    F
    
    ======================== FAILURES =========================
    _______________________ test_demo1 ________________________
    
        def test_demo1():
            print("in test_demo1 ...")
    >       warnings.warn(SyntaxWarning("warning,used to test..."))
    E       SyntaxWarning: warning,used to test...
    
    test_demo.py:5: SyntaxWarning
    _______________________ test_demo2 ________________________
    
        def test_demo2():
            print("in test_demo2 ...")
    >       warnings.warn(UserWarning("warning,used to demo..."))
    E       UserWarning: warning,used to demo...
    
    test_demo.py:10: UserWarning
    ================= short test summary info =================
    FAILED test_demo.py::test_demo1 - SyntaxWarning: warning,used to test...
    FAILED test_demo.py::test_demo2 - UserWarning: warning,used to demo...
    ==================== 2 failed in 0.08s ====================
    
    (demo-HCIhX0Hq) E:\demo>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38

    当然也是可以指定忽略特定的告警类型的,如下即为忽略不显示UserWarning类型的告警。

    [pytest]
    filterwarnings =
        ignore::UserWarning
    	执行结果如下,可以看出此时UserWarning类型的告警不再显示。
    (demo-HCIhX0Hq) E:\demo>pytest -s
    =================== test session starts ===================
    platform win32 -- Python 3.7.9, pytest-7.2.0, pluggy-1.0.0
    rootdir: E:\demo, configfile: pytest.ini
    plugins: assume-2.4.3, rerunfailures-10.2
    collected 2 items
    
    test_demo.py in test_demo1 ...
    .in test_demo2 ...
    .
    
    ==================== warnings summary =====================
    test_demo.py::test_demo1
      E:\demo\test_demo.py:5: SyntaxWarning: warning,used to test...
        warnings.warn(SyntaxWarning("warning,used to test..."))
    
    -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
    ============== 2 passed, 1 warning in 0.02s ===============
    
    (demo-HCIhX0Hq) E:\demo>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    同样也是可以通过配置正则表达式来过滤告警,对匹配的告警进行忽略不显示处理或报错处理,如下即为对告警信息含有demo的的告警进行忽略不显示。

    [pytest]
    filterwarnings =
        ignore:.*demo.*
    
    • 1
    • 2
    • 3

    执行结果如下,此时含有demo的告警不再显示。

    (demo-HCIhX0Hq) E:\demo>pytest -s
    =================== test session starts ===================
    platform win32 -- Python 3.7.9, pytest-7.2.0, pluggy-1.0.0
    rootdir: E:\demo, configfile: pytest.ini
    plugins: assume-2.4.3, rerunfailures-10.2
    collected 2 items
    
    test_demo.py in test_demo1 ...
    .in test_demo2 ...
    .
    
    ==================== warnings summary =====================
    test_demo.py::test_demo1
      E:\demo\test_demo.py:5: SyntaxWarning: warning,used to test...
        warnings.warn(SyntaxWarning("warning,used to test..."))
    
    -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
    ============== 2 passed, 1 warning in 0.02s ===============
    
    (demo-HCIhX0Hq) E:\demo>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    对于命令行中使用的参数,可以在pytest.ini中通过addopts指定,如下即关闭告警显示。

    [pytest]
    addopts=--disable-warnings
    	执行结果如下,即显示有两条告警,但告警的具体内容不再显示。
    (demo-HCIhX0Hq) E:\demo>pytest -s
    =================== test session starts ===================
    platform win32 -- Python 3.7.9, pytest-7.2.0, pluggy-1.0.0
    rootdir: E:\demo, configfile: pytest.ini
    plugins: assume-2.4.3, rerunfailures-10.2
    collected 2 items
    
    test_demo.py in test_demo1 ...
    .in test_demo2 ...
    .
    
    ============== 2 passed, 2 warnings in 0.02s ==============
    
    (demo-HCIhX0Hq) E:\demo>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    通过指定如下参数,则可以彻底关闭告警。

    [pytest]
    addopts=-p no:warnings
    	执行结果如下,即不再显示搞定内容。
    (demo-HCIhX0Hq) E:\demo>pytest
    =================== test session starts ===================
    platform win32 -- Python 3.7.9, pytest-7.2.0, pluggy-1.0.0
    rootdir: E:\demo, configfile: pytest.ini
    plugins: assume-2.4.3, rerunfailures-10.2
    collected 2 items
    
    test_demo.py ..                                      [100%]
    
    ==================== 2 passed in 0.02s ====================
    
    (demo-HCIhX0Hq) E:\demo>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
  • 相关阅读:
    多目标粒子群算法及其MATLAB实现
    王爽《汇编语言》检测点11.2详细解析
    phpstudy_pro高效率建一个属于自己的网站
    2023版 STM32实战6 输出比较(PWM)包含F407/F103方式
    「蔚小理」的第二份答卷
    计算二进制中1的个数
    用Python做个学生管理系统,这不简简单单
    使用Airflow实现简单的工作流调度-大数据培训
    Systemverilog断言介绍(四)
    7.9lvs集群
  • 原文地址:https://blog.csdn.net/redrose2100/article/details/128168901