在一个pytest函数中进行多次测试

时间:2018-01-22 14:29:33

标签: python unit-testing pytest

我有一个"概念"关于pytest以及我应该如何处理多个测试的问题。

让我们说我需要为一堆字符串测试一些东西:names = [" ", "a ", " a", " a "]

我可以创建多个test_函数来单独测试它们,但它们完全相同,但输入不同。

我在想做类似的事情:

def test_names():
    names = [" ", "a ", " a", " a "]
    for name in names:
        with pytest.raises(errors.MyFooError) as ex:
            random_method(name)

问题是:这样做,如果一个元素没有引发errors.MyFooError,我会收到:

Failed: DID NOT RAISE <class 'errors.MyFooError'

该消息是通用的,我不知道发生了哪个元素。

我可能会分成4个测试,一个用于列表中的每个元素,我想这是正确的方法吗?如果列表很大会怎么样?

1 个答案:

答案 0 :(得分:6)

您应该使用parametrize的{​​{1}}功能,如here所示。

您的代码看起来像

pytest