跳到内容

pytest-assert-in-except (PT017)

源自 flake8-pytest-style linter。

作用

检查 except 子句中的 assert 语句。

为什么这不好?

当测试异常时,应该使用 pytest.raises() 代替 except 子句中的 assert 语句,因为它更明确且更符合习惯。此外,如果 没有 引发异常,pytest.raises() 将会失败,这与 assert 语句不同。

示例

def test_foo():
    try:
        1 / 0
    except ZeroDivisionError as e:
        assert e.args

建议改为

import pytest


def test_foo():
    with pytest.raises(ZeroDivisionError) as exc_info:
        1 / 0
    assert exc_info.value.args

参考