一、前言
cmd or pycharm的terminal输入命令:pip install -U pytest,安装pytest的同时会安装pytest-rerunfailures。
二、rerun所有失败的用例
1、使用--reruns命令行选项,并指定要运行测试的最大次数:pytest --reruns 5 -s
2、添加rerun的delay,使用--reruns-delay命令行选项,指定下次测试重新开始开始前等待的秒数:pytest --reruns 5 --reruns-delay 10 -s
3、运行失败的fixture或setup_class也将重新执行
4、rerun指定的测试用例,要将单个测试用例添加flaky装饰器@pytest.mark.flaky(reruns=5),并在测试失败时rerun,需要指定最大运行的次数
三、小试牛刀
(1)rerun指定的失败的测试用例,指定max次数,未指定delay时间
1 import pytest 2 3 @pytest.mark.flaky(reruns=5) 4 def test_rerunfailures(): 5 import random 6 assert random.choice([True,False,False])
执行结果:
(2)rerun指定的失败的测试用例,指定max次数,指定delay时间
1 import pytest 2 3 @pytest.mark.flaky(reruns=5,reruns_delay=10) 4 def test_rerunfailures(): 5 import random 6 assert random.choice([True,False,False])
Notes:
- 如果指定了用例的重复运行次数和delay,在命令行添加--reruns和--reruns-delay对这些用例时不会生效的
- 不可以和fixture装饰器一起使用:@pytest.fixture()
- 该插件与pytest-xdist的--looponfail标记不兼容
- 该插件与核心--pdb标记不兼容
参考链接:https://www.cnblogs.com/poloyy/p/12687308.html