跳到内容

pytest-raises-too-broad (PT011)

源自 flake8-pytest-style linter。

作用

检查没有 match 参数的 pytest.raises 调用。

为什么这不好?

pytest.raises(Error) 将捕获任何 Error,并且可能捕获与被测代码无关的错误。为避免这种情况,应该使用 match 参数调用 pytest.raises。需要 match 参数的异常名称可以通过 lint.flake8-pytest-style.raises-require-match-forlint.flake8-pytest-style.raises-extend-require-match-for 设置进行配置。

示例

import pytest


def test_foo():
    with pytest.raises(ValueError):
        ...

    # empty string is also an error
    with pytest.raises(ValueError, match=""):
        ...

建议改为

import pytest


def test_foo():
    with pytest.raises(ValueError, match="expected message"):
        ...

Options (选项)

参考