Pytest如何同时设置DEBUG与INFO日志级别并查看全量日志输出
Pytest日志配置参数查询及全级别日志输出方案
配置参数可选值查询方式
不需要查找零散文档,两个方式可以拿到100%匹配本地版本的参数说明和可选值:
- 执行
pytest --help,在输出内容里搜索log关键字,能看到所有命令行维度支持的日志参数、取值范围、默认值,所有配置文件支持的参数和命令行参数完全对应,命名仅需去掉参数前缀横杠即可。 - 直接查看本地pytest安装路径下的
logging.py插件源码,所有参数的枚举值、生效逻辑都有明确标注,不会出现文档和实际版本不匹配的问题。
输出DEBUG、INFO全量日志的配置实现
日志级别从低到高排序为DEBUG < INFO < WARNING < ERROR < CRITICAL,只要把日志输出阈值设为最低的DEBUG,所有更高等级的日志(包含需要的INFO级别)都会被完整输出,不会有遗漏。
永久配置(推荐)
在项目根目录的pytest.ini文件里写入以下配置,所有pytest运行都会自动加载规则:
[pytest] # 开启控制台实时日志输出 log_cli = True # 控制台输出日志阈值设为DEBUG,覆盖所有级别 log_cli_level = DEBUG # 控制台日志输出格式,可按需调整字段 log_cli_format = %(asctime)s | %(levelname)-8s | %(filename)s:%(lineno)d | %(message)s log_cli_date_format = %Y-%m-%d %H:%M:%S # 日志文件写入配置(不需要写文件可以删掉这部分) log_file = ./pytest_run_full.log log_file_level = DEBUG log_file_format = %(asctime)s | %(levelname)-8s | %(filename)s:%(lineno)d | %(message)s log_file_date_format = %Y-%m-%d %H:%M:%S
临时运行配置
单次运行需要看全量日志时,直接在执行命令里带上对应参数即可:
pytest --log-cli-level=DEBUG --log-file=./pytest_run_full.log --log-file-level=DEBUG
注意事项
如果业务代码里手动配置了logging的基础级别,比如写了logging.basicConfig(level=logging.INFO),会提前把DEBUG级别的日志过滤掉,pytest侧无法接收到这部分内容,需要把业务代码里的日志级别调整为DEBUG,或者去掉手动配置的level参数,交给pytest统一接管日志配置。
内容的提问来源于stack exchange,提问作者Avraam
相关产品推荐
相关产品推荐

