8、pytest -- 捕获告警信息

本文详细介绍了如何使用 pytest 捕获和管理告警信息,包括默认的告警捕获行为、自定义告警过滤器、禁止告警展示和捕获,以及编写触发期望告警的断言。通过实例展示了在命令行、测试项、类和模块级别上自定义告警行为的方法,并探讨了与告警处理的相关配置选项。
摘要由CSDN通过智能技术生成

pytest 3.1版本新增特性

1. 告警信息的默认捕获行为

pytest可以自动捕获测试中产生的告警信息,并在执行结束后进行展示;

下面这个例子,我们在测试中人为的产生一条告警:

# src/chapter-8/test_show_warning.py

import warnings


def api_v1():
    warnings.warn(UserWarning('请使用新版本的API。'))
    return 1


def test_one():
    assert api_v1() == 1

我们也可以通过-W arg命令行选项来自定义告警的捕获行为:

arg参数的格式为:action:message:category:module:lineno

  • action只能在"error", "ignore", "always(all)", "default", "module", "once"中取值,默认取值为default
  • category必须是Warning的子类,默认取值为Warning类,表示所有的告警;
  • module必须为字符串,表示特定模块产生的告警信息;

下面是一些常见的使用场景:

  • 忽略某一种类型的告警信息;例如,忽略UserWarning类型的告警(-W ignore::UserWarning):

    λ pipenv run pytest -W ignore::UserWarning src/chapter-8/test_show_warnings.py
    ============================ test session starts ============================= 
    platform win32 -- Python 3.7.3, pytest-5.1.3, py-1.8.0, pluggy-0.13.0
    rootdir: D:\Personal Files\Projects\pytest-chinese-doc
    collected 1 item
    
    src\chapter-8\test_show_warnings.py .                                   [100%]
    
    ============================= 1 passed in 0.02s ==============================
    
  • 将某一种类型的告警转换为异常来处理;例如,将UserWarning告警转换为异常处理(-W error::UserWarning):

    λ pipenv run pytest -W error::UserWarning src/chapter-8/test_show_warnings.py
    
    ============================ test session starts ============================= 
    platform win32 -- Python 3.7.3, pytest-5.1.3, py-1.8.0, pluggy-0.13.0
    rootdir: D:\Personal Files\Projects\pytest-chinese-doc
    collected 1 item
    
    src\chapter-8\test_show_warnings.py F                                   [100%]
    
    ================================== FAILURES ================================== 
    __________________________________ test_one __________________________________
    
        def test_one():
    >       assert api_v1() == 1
    
    src\chapter-8\test_show_warnings.py:31:
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
    
        def api_v1():
    >       warnings.warn(UserWarning('请使用新版本的API。'))
    E       UserWarning: 请使用新版本的API。
    
    src\chapter-8\test_show_warnings.py:26: UserWarning
    ============================= 1 failed in 0.05s ============================
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值