前言
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 。