前言
- 本来学习下重复执行用例pytest-repeat插件的使用
安装插件
- 用于重复执行单个用例,或多个测试用例,并指定重复次数
pip install pytest-repeat
–count
- 指定重复次数
使用示例
# -*- coding: utf-8 -*- # @Time : 2022/3/23 # @Author : 大海 import os def test_1(): a = 1 + 2 assert a == 3 def test_2(): a = 2 + 2 assert a == 4 if __name__ == '__main__': # --count 2 重复运行两次 os.system('pytest -s -v test_55.py --count 2')
- test_1 运行两次后运行test_2 两次
–repeat-scope
- 类似于pytest fixture的scope参数,–repeat-scope也可以设置参数: session , module,class或者function(默认值)
- function(默认)范围针对每个用例重复执行,再执行下一个用例
- class 以class为用例集合单位,重复执行class里面的用例,再执行下一个
- module 以模块为单位,重复执行模块里面的用例,再执行下一个
- session 重复整个测试会话,即所有收集的测试执行一次,然后所有这些测试再次执行等等
使用示例
# -*- coding: utf-8 -*- # @Time : 2022/3/23 # @Author : 大海 import os def test_1(): a = 1 + 2 assert a == 3 def test_2(): a = 2 + 2 assert a == 4 if __name__ == '__main__': # --repeat-scope=session 重复执行整个会话用例 os.system('pytest -s -v test_55.py --count 2 --repeat-scope=session')
mark.repeat
- @pytest.mark.repeat(count)装饰器 标记重复执行次数
使用示例
# -*- coding: utf-8 -*- # @Time : 2022/3/23 # @Author : 大海 import os import pytest import time def test_01(): a = 1 + 2 assert a == 3 @pytest.mark.repeat(2) def test_02(): a = 2 + 2 assert a == 4 if __name__ == "__main__": os.system('pytest -s -v test_56.py')
重复测试直到失败
*-x 参数,复现偶现问题重复执行100次,直到失败
pytest -s -v test_55.py --count 100 -x