自動化測試的時候,常常會遇到這樣的問題:大部分時候執行測試用例都能pass,只是偶然出現false,而出現false的時候是由於外部因素引發,好比WiFi不穩定、使用了第三方插件不穩定等,這些狀況下每每從新再執行用例就能夠pass。可能遇到這種用例false的狀況,咱們首先想到的會是去剔除失敗的用例,可是這樣作不是最明智的作法,當用例數量多的時候,很難去斷定哪些用例容易因爲第三方因素false。最好的辦法是----讓出錯的用例重跑。python
那麼如何作到讓出錯的用例重跑呢?若是你用的是nose或者pytest框架編寫用例,就可使用flaky插件。該插件可以在那些不穩定的case失敗以後,重複執行這些case。 框架
1.flaky插件安裝測試
pip install flaky
2.測試腳本中的使用.net
2.1 將不穩定的case標記爲flaky插件
from flaky import flaky @flaky def test_func(self): self.assertEqual(1+3,5)
備註:在case方法上方加上@flaky,用例執行失敗的時候會默認從新執行一次。命令行
from flaky import flaky @flaky(max_runs=3, min_passes=2) def test_func(self): self.assertEqual(1+3,5)
備註:flaky接收兩個參數:max_runs,min_passes。max_runs表示測試失敗以後,會重複執行這個測試的次數。min_passes表示執行max_runs這麼屢次中,成功的次數>=min_passes的話,則認爲這個case就pass了。如上用例表示:執行3次用例中,若是pass次數>=2,則pass.code
2.2 將不穩定的測試類標爲flakyip
from flaky import flaky @flaky class testAdd(unittest.TestCase): def test_func(self): self.assertEqual(1+3,5) @flaky(max_run=3) def test_double(self): self.assertEqual(2+6,8)
備註:以上testAdd類下的全部方法都會應用到flaky。test_func失敗以後會默認再執行一次。test_double失敗以後會從新再執行3次。get
3.命令行中使用flakyit
3.1 強制全部的測試使用flaky
py.test --force-flaky
3.2設置重複執行的次數
py.test --force-flaky --max-runs=3 --min-passes=2
3.3不輸出flaky執行的測試報告
py.test --no-flaky-report
備註:正常狀況下,測試完成後將輸出flaky的測試報告,該報告中顯示了有哪些測試重複執行了以及重複執行的狀況。若是不想在測試完成後輸出flaky報告,能夠在執行測試的時候加上--no-flaky-report參數。