一、在cmd安裝repeat
pytest-repeat是pytest的一個插件,用於重複執行單個用例,或多個測試用例,並指定重複次數,pytest-repeat支持的版本:
- python 2.7,3.4+ 或 PyPy
- py.test 2.8或更高
pip install pytest-repeat
二、安裝完後,使用方法如下
方法一:在測試用例直接寫:@pytest.mark.repeat(n),n代表執行次數,這種方式的執行順序是每條用例執行N次之後再往下執行其他用例
如果要在代碼中標記要重複多次的測試,可以使用@pytest.mark.repeat(count)裝飾器
方法二:使用–count命令行選項指定要運行測試用例和測試次數,pytest --count=10 腳本名.py
三、重複測試直至失敗
如果您正在嘗試診斷間歇性故障,那麼一遍又一遍地運行相同的測試直至失敗是有用的。您可以將pytest的-x選項與pytest-repeat結合使用,以強制測試運行器在第一次失敗時停止。例如:
pytest --count=1000 -x test_cc.py
這樣嘗試運行test_cc.py 1000次,但一旦發生故障就會停止
四、其他
1、如果代碼裏已使用了repeat(count)裝飾器,那在命令行執行用例再加上–count=3時,只對無count裝飾器的重複3次。
2、repeat-scope
–repeat-scope類似於pytest fixture的scope參數,–repeat-scope也可以設置參數:session,module,class或者function(默認值)
function(默認)範圍針對每個用例重複執行,再執行下一個用例
class 以class爲用例集合單位,重複執行class裏面的用例,在執行下一個
module 以模塊爲單位,重複執行模塊裏面的用例,再執行下一個
session 重複整個測試會話,即所有收集的測試執行一次,然後所有這些測試再次執行等等
使用–repeat-scope=session重複執行整個會話用例
1)pytest test_cc.py -s --count=2 --repeat-scope=session
2)pytest test_cc.py -s --count=2 --repeat-scope=class
3)pytest test_cc.py -s --count=2 --repeat-scope=function
4)pytest test_cc.py -s --count=2 --repeat-scope=module