pytest首先运行新测试(差不多)

时间:2018-05-19 21:19:31

标签: python unit-testing pytest

我正在使用 pytest 。我喜欢我称之为pytest的方式(首先重试失败的测试,详细检查,抓取并显示串行输出,首先停止失败):

 pytest --failed-first -v -s -x

然而,还有一件事我想要:

我希望pytest 运行新测试(即测试之前从未测试过) - failed-first 之后。这样,在处理长时间执行的测试时,我会尽快获得最相关的信息。

有什么办法吗?

2 个答案:

答案 0 :(得分:3)

这可能不是您直接询问的内容,但我的理解是,在开发期间创建新测试时,测试执行顺序对您很重要。

由于您已经在使用这些“新”测试,pytest-ordering插件可能是一个很好的选择。它允许您通过使用@pytest.mark.first@pytest.mark.second等装饰器修改测试来影响执行顺序。

pytest-ordering可以使用pytest_collection_modifyitems hook更改执行顺序。还有pytest-random-order插件,uses the same hook也可以控制/更改订单。

您也可以定义自己的钩子并根据您的特定需求进行调整。例如,这里使用另一个钩子来改组测试:

答案 1 :(得分:0)

对于现在开始使用此方法的任何人,pytest added a --new-first option在运行所有其他测试之前先运行新测试。可以将其与--failed-first结合使用以运行新的和失败的测试。对于测试驱动的开发,我发现将这些选项与pytest-watch结合使用会很有帮助,正如我在blog中所述。