第十七:Pytest-重复执行用例插件之pytest-repeat的详细使用

📅 2026/7/24 1:43:48
第十七:Pytest-重复执行用例插件之pytest-repeat的详细使用
一.前言1.在做功能测试的时候经常会遇到某个模块不稳定偶然会出现BUG对于这种问题会反复执行多次用例最终复现出问题2.自动化运行用例时候也会出现偶然的bug可以针对单个用例或者针对某个模块的用例重复执行多次二.安装插件pip3 install pytest-repeat-i http://pypi.douban.com/simple/--trusted-host pypi.douban.com三.快速入门1.结合之前讲到的失败重跑、输出html报告插件来敲命令行2.两种方式皆可等号或空格count2count2pytest--htmlreport.html--self-contained-html-s--reruns5--count210fixture_request.py四.重复测试直到失败(重点)1.如果需要验证偶现问题可以一次又一次地运行相同的测试直到失败这个插件将很有用1.1.可以将pytest的-x选项与pytest-repeat结合使用以强制测试运行程序在第一次失败时停止 pytest--count1000-x test_101.py1.1.test_101.pydeftest_example():importrandom flagrandom.choice([True,False])print(flag)assertflag1.2.执行命令pytest-s--count5-x 13repeat.py五.pytest.mark.repeat(count)1.如果要在代码中将某些测试用例标记为执行重复多次可以使用pytest.mark.repeat(count)1.1.test_102.pypytest.mark.repeat(5)deftest_repeat():print(测试用例执行)1.2.执行命令pytest-s 13repeat.py2.--repeat-scope命令行参数2.1.作用可以覆盖默认的测试用例执行顺序类似fixture的scope参数2.1.1.function默认范围针对每个用例重复执行再执行下一个用例2.1.2.class以class为用例集合单位重复执行class里面的用例再执行下一个2.1.3.module以模块为单位重复执行模块里面的用例再执行下一个2.1.4.session重复整个测试会话即所有测试用例的执行一次然后再执行第二次2.2.案例一class2.2.1.test_103.pyclassTest_repeat:deftest_repeat3(self):print(测试用例执行333)classTest_repeat2:deftest_repeat3(self):print(测试用例执行444)2.2.2.执行命令pytest-s--count2--repeat-scopeclass13repeat.py2.3.案例二module2.3.1.test_104.pydeftest_repeat1():print(测试用例执行111)deftest_repeat2():print(测试用例执行222)classTest_repeat:deftest_repeat3(self):print(测试用例执行333)2.3.2.执行命令pytest-s--count2--repeat-scopemodule 13repeat.py六.兼容性问题1.pytest-repeat不能与unittest.TestCase测试类一起使用2.无论--count设置多少这些测试始终仅运行一次并显示警告