pytest之.pytest_cache文件夹作用【Pytest中的cache缓存功能】
前言
pytest 运行完用例之后会生成一个 .pytest_cache 的缓存文件夹,用于记录用例的ids和上一次失败的用例。
1、跑自动化时经常会出现这样一个情况,一轮自动化跑完后零星出现了几个失败测试用例,无法断定失败的原因,所以可能需要重新跑一下失败的测试用例去调试,那我们要做的是就去修改脚本把那几个失败的测试用例筛选出来然后重新跑一遍;
2、但是在pytest测试框架因为有缓存功能,就不需要手动去查找上次失败的测试用例并筛选执行。
3、pytest测试框架中执行完所有的测试用例后会在当前目录下生成 .pytest_cache ,里面就保存了上一次用例执行的信息。
pytest测试框架中跟缓存有关的命令行参数
1、 --last-failed : 如重新运行上次运行结果为失败的测试用例, 如果没有执行失败的用例则执行所有的测试用例。【 --lf 】
场景:因为某次改动导致了多个测试用例失败了,那么我可以先执行一次全量测试找出所有失败的用例,待问题修复后,再次执行时带上这个选项就可以快速的进行验证:只执行失败用例验证失败用例是否已修复。
这个的实现原理是:pytest会在每次执行时将该次执行失败的所有用例存到测试文件同级目录下的名为.pytest_cache/v/cache/lastfailed的隐藏文件里,这样就清楚的标明了上次执行失败的用例。
2、 --failed-first :运行所有测试,但首先运行上次运行失败的测试(这可能会重新测试,从而导致重复的 fixture setup/teardown )【 --ff 】
3、 --new-first :根据文件插件的时间,新的测试用例会先运行。【 --nf 】
3、 --cache-show :显示 .pytest_cache 文件内容,不会收集测试用例也不会执行测试用例
4、 --cache-clear :开始执行测试之前先清空 .pytest_cache 文件
.pytest_cache 文件夹详解
1、 .pytest_cache/v/cache/lastfailed :上一次运行失败的测试用例。
2、 .pytest_cache/v/cache/nodeids :上一次运行的所有测试用例(无论测试用例的执行结果通过还是失败)。
3、 .pytest_cache/v/cache/stepwise :测试用例的路径。
4、 .pytest_cache/v/cache/.gitignore :pytest测试框架 .pytest_cache的自带的 .gitignore 文件。
5、 .pytest_cache/v/cache/CACHEDIR.TAG :pytest创建的缓存目录标签。
6、 .pytest_cache/v/cache/README.md : .pytest_cache 文件夹介绍。
实例
一共七个测试用例,四个PASSED,三个FAILED
--last-failed
这里只运行了上一次失败的测试用例。
--failed-first
这里首先会执行之前失败的测试用例,然后在运行其他的测试用例。
--cache-show
【注意】
①重复运行同一组测试用例时(测试套不变), .pytest_cache 目录中的文件不变。
②上一次运行的一组测试用例,下一次运行另一组测试用例, .pytest_cache 目录中的文件会改变,会加上另一组测试用例的信息。
③继②后,此时若想去除 .pytest_cache 目录中文件的内容,重新运行第一组的测试用例,并带上命令行参数 --cache-clear 。