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

五、参考

1、https://zhuanlan.zhihu.com/p/591602411

posted @ 2023-04-19 12:03  xyztank  阅读(411)  评论(0编辑  收藏  举报