如何在 Pytest 中添加日志记录
前言
在编写和运行测试时,对于调试和排查问题,添加日志记录是一种非常有用的技术。Pytest 是一个流行的 Python 测试框架,开发者通过pytest可以轻松地编写和运行各种测试。本文将介绍如何在 Pytest 中添加日志记录,以便更好地理解测试执行过程中的细节和问题。
pytest.ini
我们之前有介绍过pytest.ini
文件的使用,可以帮助我们更加方便的执行测试用例,pytest.ini中有单独为log日志增加的一些信息,如下图:
我们可以对pytest.ini
文件做出如下配置:
[pytest]
log_cli = True
log_cli_level = INFO
log_cli_format = %(asctime)s [%(levelname)s] | %(filename)s:%(lineno)s | %(message)s
log_cli_date_format = %Y-%m-%d %H:%M:%S
含义如下:
-
log_cli = True
:表示是否实时打开log监测,默认为False -
log_cli_level
: 表示监测log日志等级显示 -
log_cli_format
: 表示输出log日志显示格式 -
log_cli_date_format
: 表示显示log时间
运行用例
在我们创建了pytest.ini
文件之后,在测试用例编写时,我们需要导入logging
库,我们的测试用例文件内容如下:
import logging
def test_demo():
logging.info('这是测试用例01的info...')
logging.warning('这是测试用例01的warning...')
logging.error('这是测试用例01的error...')
assert 1 == 1
运行用例后,控制台输出如下:
============================= test session starts =============================
collecting ... collected 1 item
test_demo.py::test_demo
-------------------------------- live log call --------------------------------
2024-04-09 17:15:21 [INFO] | test_demo.py:5 | 这是测试用例01的info...
2024-04-09 17:15:21 [WARNING] | test_demo.py:6 | 这是测试用例01的warning...
2024-04-09 17:15:21 [ERROR] | test_demo.py:7 | 这是测试用例01的error...
PASSED [100%]
============== 1 passed in 0.01s ================
如果我们不满足于日志只输出在控制台,想要输出成日志文件,我们可以修改pytest.ini
文件,我们可以做出如下修改:
[pytest]
log_file =pytest_log.txt
log_file_level = INFO
log_file_date_format = %Y-%m-%d %H:%M:%S
log_file_format = %(asctime)s [ %(levelname)s ] %(filename)s:%(lineno)s | %(message)s
运行测试之后,我们可以看到项目中新生成了一个日志文件,内容如下:
2024-04-09 17:18:39 [ INFO ] test_demo.py:5 | 这是测试用例01的info...
2024-04-09 17:18:39 [ WARNING ] test_demo.py:6 | 这是测试用例01的warning...
2024-04-09 17:18:39 [ ERROR ] test_demo.py:7 | 这是测试用例01的error...
总结
本文主要介绍了如何在 Pytest 中添加日志记录,以便更好地理解和调试测试代码。可以根据自己的需求进一步配置和扩展日志记录功能,从而更加有效地编写和运行测试用例。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
2022-04-11 技术分享 | WEB 端常见 Bug 解析