微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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 核心开发人员

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。