You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在pytest中显示stdout和stderr捕获内容但不显示日志捕获?

如何让pytest只显示stdout和stderr的捕获内容

pytest的--show-capture参数确实没有直接的"both"选项来仅显示stdout和stderr,但可以通过以下几种方式实现需求:

方式一:通过配置文件控制

在项目根目录创建或修改pytest.ini文件,添加以下配置:

[pytest]
show_capture = all
log_cli = false
log_level = CRITICAL
  • show_capture = all:让pytest捕获所有类型的输出
  • log_cli = false:关闭实时日志打印到控制台
  • log_level = CRITICAL:仅捕获严重级别(CRITICAL)的日志,基本不会生成Captured log call块

如果使用pyproject.toml,配置如下:

[tool.pytest.ini_options]
show_capture = "all"
log_cli = false
log_level = "CRITICAL"

方式二:编写简单插件过滤日志捕获

创建项目根目录下的conftest.py文件,加入以下代码:

import pytest
from _pytest.capture import CaptureResult

@pytest.hookimpl(tryfirst=True)
def pytest_runtest_makereport(item, call):
    if call.when == "call" and hasattr(call, "capture"):
        # 清空日志捕获内容,避免显示Captured log call区块
        call.capture.log = CaptureResult(out="", err="")

这个插件会在测试执行后清空日志捕获的内容,只保留stdout和stderr的捕获结果。

方式三:命令行参数组合

直接在命令行中组合参数,临时生效:

pytest --show-capture=all --no-log-cli --log-level=CRITICAL

原理和配置文件一致,通过--show-capture=all获取所有捕获内容,再通过日志参数抑制日志的捕获和显示。

内容的提问来源于stack exchange,提问作者Nikolay Prokopyev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 05:07:25