pytest的自带日志管理
⚙️ 核心配置方式
Pytest 的日志功能主要通过以下三种方式进行配置:
1. 通过 pytest.ini 配置文件(推荐)
在项目根目录创建 pytest.ini 文件,是管理日志配置最清晰、最推荐的方式。所有配置选项都可以集中存放,方便团队共享和维护。
[pytest] # === 实时日志(控制台)配置 === log_cli = True # 启用实时日志输出 log_cli_level = INFO # 设置实时日志级别 log_cli_format = %(asctime)s [%(levelname)s] %(message)s (%(filename)s:%(lineno)s) # 实时日志格式 log_cli_date_format = %Y-%m-%d %H:%M:%S # 实时日志日期格式 # === 日志文件配置 === log_file = logs/pytest.log # 日志文件路径,可以是绝对路径或相对路径 log_file_level = DEBUG # 日志文件级别,通常设为 DEBUG 以获取更多细节 log_file_format = %(asctime)s [%(levelname)s] %(message)s (%(filename)s:%(lineno)s) # 文件日志格式 log_file_date_format = %Y-%m-%d %H:%M:%S # 文件日志日期格式
-
log_cli:是否开启实时控制台日志输出。 -
log_cli_level:控制实时日志的最小输出级别。 -
log_file:指定日志文件的输出路径。 -
日志格式:
log_format、log_cli_format、log_file_format可用于自定义不同场景下的日志格式。 -
日期格式:
log_date_format、log_cli_date_format、log_file_date_format用于自定义日志中的日期时间格式。
📌 基本使用步骤
1. 在测试函数中写入日志
# test_example.py import logging def test_my_feature(): logging.info("这是一条普通信息") logging.warning("这是一条警告") logging.error("这是一条错误") # 也可以使用自己命名的 logger logger = logging.getLogger(__name__) logger.debug("这是一条调试信息")
2. 运行 pytest
pytest
3. 观察输出
-
如果你的
pytest.ini中设置了log_cli = True,运行时会实时在控制台看到类似下面的输出(与测试进度一起显示):
test_example.py::test_my_feature --------------------------------- live log --------------------------------- 2025-03-27 10:30:45 [INFO] 这是一条普通信息 (test_example.py:5) 2025-03-27 10:30:45 [WARNING] 这是一条警告 (test_example.py:6) 2025-03-27 10:30:45 [ERROR] 这是一条错误 (test_example.py:7) PASSED
-
如果测试失败,pytest 也会在失败报告中附带当时产生的日志。
-
如果配置了
log_file,日志文件(如logs/pytest.log)中也会写入同样的内容(格式和级别可以独立控制)
2. 通过命令行参数
适用于临时调试或 CI/CD 脚本中动态指定参数。常用参数如下:
| 命令行参数 | 作用 | 示例 |
|---|---|---|
--log-cli-level=<level> |
开启并设置实时日志级别 | pytest --log-cli-level=DEBUG |
--log-file=<path> |
指定日志文件输出路径 | pytest --log-file=logs/pytest.log |
--log-file-level=<level> |
设置日志文件级别 | pytest --log-file-level=DEBUG |
--log-format=<format> |
设置日志格式 | pytest --log-format="%(asctime)s %(levelname)s %(message)s" |
--log-date-format=<format> |
设置日志日期格式 | pytest --log-date-format="%Y-%m-%d %H:%M:%S" |
3. 通过 pyproject.toml 配置
在你的 pyproject.toml 文件中,可以通过 [tool.pytest.ini_options] 来配置 pytest 的日志选项
[tool.pytest.ini_options] log_cli = true log_cli_level = "INFO" log_file = "logs/pytest.log" log_file_level = "DEBUG"
-
注意:
pyproject.toml中的配置方式本质上与pytest.ini是一样的,只是语法上需要符合 TOML 格式。

浙公网安备 33010602011771号