Pytest 的“caplog”装置的类型提示是什么?

问题描述

正如标题所说。我正在使用 pytest 附带的 caplog 固定装置。我正在使用 mypy 进行类型检查,并且想知道 caplog 的正确类型提示是什么。

例如:

def test_validate_regs(caplog: Any) -> None:
    validate_regs(df,logger)
    assert caplog.text == "","No logs should have been made."

在这个例子中,我将它设置为 Any,但我想知道是否有更具体的类型提示我可以使用。

我尝试阅读有关 caplog 的文档,并在 github 中搜索 pytest 代码以查看 caplog 固定装置返回的内容,但除了 the following 之外找不到任何其他内容。但是使用 str 类型只是给了我一个错误,说 str 类型没有属性 text,这是有道理的。

当我打印 caplog 的类型时,我得到 _pytest.logging.LogCaptureFixture,尽管我不确定如何从 _pytest 导入它并使用它。

解决方法

从 pytest 6.2.0 开始,您应该使用 pytest.LogCaptureFixture

在此之前,您需要导入一个不推荐的私有名称(我们经常在没有通知的情况下更改 _pytest 命名空间内的内部结构,并且不承诺向前或向后兼容性)


免责声明:我是 pytest 核心开发人员