问题描述
正如标题所说。我正在使用 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 核心开发人员