pytest插件之pytest-cache
一、背景
pytest-cache是pytest的一个第三方插件,在测试人员运行大量测试用例时,可以缓存测试结果,从而提高测试效率。尤其是在测试用例执行时间较长或者测试用例数量较多的情况下,使用pytest-cache插件可以大幅度减少测试用例执行时间,提高测试效率。
另外,每次执行完pytest后,会默认生成一个.pytest_cache
的缓存文件夹,用于记录自动化测试用例的ids和上一次失败的用例,便于分析和定位问题。
二、安装
安装插件在命令行中输入以下命令,安装pytest-cache插件:
pip install pytest-cache
三、缓存文件
pytest-cache生成的缓存文件夹包含以下几个文件
1、lastfailed
这个文件记录了最新一次执行的测试中失败的测试用例。如果运行 pytest 命令时使用了 --lf 或 --last-failed 参数,pytest 会自动加载这个文件并运行其中保存的测试集合。
2、makefile
这个文件存储了 make 和 Makefile 相关的信息,主要用于加速在使用 Makefile 的项目中进行测试。
3、nodeids
这个文件记录了所有测试用例的 node id 和对应的文件路径,以便在执行 pytest --verbose 时展示详细的测试用例信息。
4、stepwise
这个文件记录了当前正在执行的测试用例的状态,以及后续待运行的测试用例列表。
5、failed_ids
这个文件存储了上一次测试中确切失败的测试用例的 node id。
6、lastupdated
这个文件记录了最后一次更新缓存的时间戳,作为检查缓存文件是否需要重新生成的依据。
这些文件的作用都是用于缓存 pytest 的相关信息,从而在下一次执行 pytest 命令时能够更快地加载测试用例并提高测试效率。
但是需要注意的是,这些文件并不是必须的,对于某些特殊的项目或者测试场景,可以通过设置环境变量 PYTEST_DISABLE_PLUGIN_AUTOLOAD 来禁用 pytest-cache 插件,从而避免生成这些文件。
四、执行命令
1、--lf
或 --last-failed
用于重新运行上一次 pytest 测试中失败的测试用例。
此命令非常适用于在开发过程中,针对单个测试用例进行调试和修复的场景。
pytest --last-failed
pytest --lf
2、--ff
或 --failed-first
用于最先执行上一次 pytest 测试失败的测试用例,然后再执行其余所有测试用例。
此命令适用于对于测试用例非常多的项目,可以减少运行时间,先确保失败的用例成功通过,再执行其他用例。
pytest --failed-first
pytest --ff
3、--nf
或--new-first
根据测试文件的修改时间,新的测试用例会先执行。
具体地说,pytest-cache 会根据测试文件最后修改时间的先后顺序来决定测试的执行顺序。这意味着最新修改的测试文件将首先被执行,而较早的测试文件将被放到后面。
pytest --new-first
pytest --nf
4、--cache-clear
用于清除 pytest 的缓存,包括本次和上次 pytest 运行产生的所有缓存数据,也就是先清空 .pytest_cache
文件,以便重新执行所有测试用例。
此命令适用于需要完全重置 pytest 缓存或者重新执行所有测试用例的场景。
pytest --cache-clear