当测试在pytest中失败时,是否可以抑制所有参数化参数的显示

时间:2017-06-08 08:31:21

标签: pytest

我目前正在使用python 3.5.1和3.6以及最新版本的pytest。 当使用参数化测试运行pytest时,我希望任何失败的测试只显示失败的测试而不是参数化测试的所有设置。

解释......

我使用@ pytest.mark.parametrize装饰器编写了许多测试,以允许我使用许多不同的输入运行测试。

我还为参数化参数传递了一个id列表,如下例所示:

@pytest.mark.parametrize('input_name12, output_name12',
    [
        ('chloroform', None),
        ('chloroform-d', (['deuterated'], '-d'))]
    ],
    ids=[
        "unlabelled chloroform",
        "chloroform deuterio-labelled with -d"
    ]
def test_isotope_extract(input_name12, output_name12):
    assert isotope_extract(input_name12) == output_name12

在某些情况下,我有10多套参数,我想在我的测试中运行。这通常可行。但是,当我运行测试时,如果我的一个或多个参数化测试失败,则所有参数化测试的整个块将输出到每个故障的终端。即上述代码中的一个测试失败将导致该块中的所有代码都显示在终端中,以及哪个断言失败的具体细节。

有没有办法抑制整个参数化测试的显示,所以当我遇到故障时,我只看到失败的断言和相关的Id?

1 个答案:

答案 0 :(得分:2)

这是因为pytest打印失败函数的代码。您可以使用--tb=short

来阻止这种情况