Pytest----什么是实时日志和捕获日志

【原文链接】Pytest----什么是实时日志和捕获日志

实时日志和捕获日志与实时标准输出和捕获标准输出是类似的,不同的是实时日志和捕获日志都是用来显示通过logging模块打印的的日志内容,而对于比如print打印的内容时不会在实时日志和捕获日志中显示的。
实时日志顾名思义,就是实时显示的日志,而捕获日志就是在执行的过程中将logging打印的日志都收集起来,同样pytest的对捕获日志的显示机制是当测试脚本失败后才会显示,而当用例通过时,则是不会显示捕获日志的,这与实际情况时一致的,因为在自动化测试过程中,当用例都通过后,我们一般是不关心日志打印的,只有当用例失败后我们在定位失败原因的时候才会去关注出错的信息以及帮助定位问题的日志信息。有一点不同额是在pytest中实时日志在默认情况下是不显示的,如果要显示实时日志需要主动配置开启实时日志。
下面首先观察如下代码,即在测试脚本中通过logging打印了几条日志信息。用例断言设置通过即用例执行会通过。

import logging

def test_demo():
    logging.warning("this is warning log ...")
    logging.error("this is error log ...")
    logging.critical("this is critical log ...")
    assert 1==1

执行结果如下,可以发现虽然此时日志打印的warning、error和critical日志,按正常来说应该是可以显示出来的,但是这里却啥也没显示,这就是说在pytest中默认情况下实时日志是关闭的。

(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
plugins: assume-2.4.3, rerunfailures-10.2
collected 1 item

test_demo.py .                                       [100%]

==================== 1 passed in 0.02s ====================

(demo-HCIhX0Hq) E:\demo>
	这里可以先通过pytest –o log_cli=true 执行,观察结果如下,此时可以看到已经存在live log call了,这就是实时日志。
(demo-HCIhX0Hq) E:\demo>pytest -o log_cli=true
=================== test session starts ===================
platform win32 -- Python 3.7.9, pytest-7.2.0, pluggy-1.0.0
rootdir: E:\demo
plugins: assume-2.4.3, rerunfailures-10.2
collected 1 item

test_demo.py::test_demo
---------------------- live log call ----------------------
WARNING  root:test_demo.py:4 this is warning log ...
ERROR    root:test_demo.py:5 this is error log ...
CRITICAL root:test_demo.py:6 this is critical log ...
PASSED                                               [100%]

==================== 1 passed in 0.02s ====================

(demo-HCIhX0Hq) E:\demo>

下面将测试用例断言设置为失败。

import logging

def test_demo():
    logging.warning("this is warning log ...")
    logging.error("this is error log ...")
    logging.critical("this is critical log ...")
    assert 1==2

执行结果如下,可以发现,live log call即实时日志会在执行用例的时候直接实时显示出来,而在用例执行失败后,会有个Captured log call的部分,这就是捕获日志,即将用例中通过logging打印的日志信息收集起来,待用例执行完成后在打印出来。

(demo-HCIhX0Hq) E:\demo>pytest -o log_cli=true
=================== test session starts ===================
platform win32 -- Python 3.7.9, pytest-7.2.0, pluggy-1.0.0
rootdir: E:\demo
plugins: assume-2.4.3, rerunfailures-10.2
collected 1 item

test_demo.py::test_demo
---------------------- live log call ----------------------
WARNING  root:test_demo.py:4 this is warning log ...
ERROR    root:test_demo.py:5 this is error log ...
CRITICAL root:test_demo.py:6 this is critical log ...
FAILED                                               [100%]

======================== FAILURES =========================
________________________ test_demo ________________________

    def test_demo():
        logging.warning("this is warning log ...")
        logging.error("this is error log ...")
        logging.critical("this is critical log ...")
>       assert 1==2
E       assert 1 == 2

test_demo.py:7: AssertionError
-------------------- Captured log call --------------------
WARNING  root:test_demo.py:4 this is warning log ...
ERROR    root:test_demo.py:5 this is error log ...
CRITICAL root:test_demo.py:6 this is critical log ...
================= short test summary info =================
FAILED test_demo.py::test_demo - assert 1 == 2
==================== 1 failed in 0.08s ====================

(demo-HCIhX0Hq) E:\demo>

上面通过实例展示了实时日志与捕获日志。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

redrose2100

您的鼓励是我最大的创作动力

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

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

打赏作者

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

抵扣说明:

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

余额充值