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_formatlog_cli_formatlog_file_format 可用于自定义不同场景下的日志格式

  • 日期格式log_date_formatlog_cli_date_formatlog_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 格式。

 

posted @ 2026-05-26 15:13  苹果芒  阅读(24)  评论(0)    收藏  举报