pytest-rerunfailures
- 场景
- 测试失败后要重新运行n次,要在重新运行之间添加延迟时间、间隔n秒再运行。
- 安装
- pip install pytest-rerunfailures
- pip3 install pytest-rerunfailures -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
- 使用方式
- 命令行参数:--reruns n(重新运行次数),--reruns-delay m(等待运行秒数)
- 装饰器参数:reruns=n(重新运行次数),reruns_delay=m(等待运行秒数)
pytest -v -s --reruns 1 test_2.py
pytest-assume
- 场景
- 一个方法中些多条断言,中间有一条失败,后面的代码就不执行了,我们希望有失败也能执行完毕。
- 安装
- pip install pytest-assume
- pip3 install pytest-assume -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
- 使用方式
- pytest.assume(1==4)
- pytest.assume(2==4)
from time import sleep
import pytest
def test_assume():
assert 1 == 2
assert False == True
assert 100 == 200
def test_assume2():
# assert 1 == 2
# assert False == True
# assert 100 == 200
pytest.assume(1 == 1)
pytest.assume(False == True)
pytest.assume(100 == 200)
pytest.assume(4 != 1)
if __name__ == "__main__":
pytest.main(['-v', '-s', 'test_2.py'])
pytest -v -s test_2.py::test_assume
可以看到,第一行断言失败之后,后面的断言也不会执行,包括正常的代码
pytest -v -s test_2.py::test_assume2
- 可以看到,第二行即使断言失败,后面的断言还是会继续执行
- 这有助于我们分析和查看到底一共有哪些断言是失败的
- 而且最后的代码也还会正常执行,比直接用assert更高效