pytest 夹具“capsys”的类型提示是什么?

问题描述 投票:0回答:1

在为应该向控制台打印内容的函数编写 pytest 测试时,为了验证输出字符串,我使用

capsys
夹具和
cypsys.readouterr()

这是我当前使用的代码:

@pytest.mark.parametrize(
    "values,expected",
    [
        ([], "guessed so far: \n"),
        (["single one"], "guessed so far: single one\n"),
        (["one", "two", "three", "4"], "guessed so far: 4, three, two, one\n"),
    ],
)
def test_print_guesses(capsys, values: list, expected: str) -> None:
    hm.print_guesses(values)
    assert capsys.readouterr().out == expected

我还在 VS Code 中使用 mypy 扩展,所以现在我收到警告:

Function is missing a type annotation for one or more arguments

我想摆脱它。

capsys
参数的适当类型注释是什么?

python pytest mypy
1个回答
0
投票

根据capsys

文档
,它:

返回

CaptureFixture[str]
的实例。

这个类确实有一个

readouterr
方法。所以你的测试应该是这样的:

@pytest.mark.parametrize(
    # ...
)
def test_print_guesses(capsys: pytest.CaptureFixture[str], values: list, expected: str) -> None:
    hm.print_guesses(values)
    assert capsys.readouterr().out == expected
© www.soinside.com 2019 - 2024. All rights reserved.