pytest中使用loguru的问题及解决
引语
上一篇文章,我们向大家推荐了python语言的一个第三方日志库loguru
,使用非常简单且功能完备。
但对于我们做自动化测试,经常使用 pytest
框架的小伙伴来说,却有点小问题。就是 Pytest
内建的日志捕获机制是在标准库 logging
的基础上进行优化过的。 这样我们在使用 pytest 框架时,如果牵涉到 pytest 自身的日志机制,也就是pytest的内建fixture caplog
实际使用的还是logging标准模块, 这里loguru
库定义的日志就难以发生作用。
当然,问题也不大,本文我们简单探讨下这个问题,并介绍下兼容方案。
Pytest 中的caplog
首先我们还是先来介绍下 Pytest 的日志
caplog
是pytest提供的一个内置fixture,用于捕获和测试日志输出。
因为这个内置插件的作用,我们在执行pytest测试时,默认只会在用例存在失败时才会显示标准输出和logging
模块及记录的日志信息。
比如下面这段代码:
# test_cap.py
import logging def test_fail(): print("这条信息将在失败时显示") assert False def test_pass(): print("这条信息成功时不显示") assert True def test_exception(): try: result = 1 / 0