pytest.raises通过了错误的异常

时间:2018-10-17 15:34:43

标签: python unit-testing testing automated-tests pytest

在以下示例中,我希望当expecting = NotImplementedError时测试失败。

import pytest
def fun():
    raise ValueError()

@pytest.mark.parametrize("expecting", [
    (ValueError),
    (NotImplementedError)
])
def test_something( expecting):
    with pytest.raises(ValueError):
        fun()

但是,它却通过了:

test_something[ValueError] PASSED
test_something[NotImplementedError] PASSED

为什么会这样,正确的用法是什么?

1 个答案:

答案 0 :(得分:1)

您的测试对expecting无效。您写了with pytest.raises(ValueError):,所以pytest一直在寻找ValueError引发的fun()。也许您是想写with pytest.raises(expecting):来代替的?