我正在使用Python的unittest。如何測試一個Python函數需要一定時間才能完成
我想寫一個測試,確保某個方法在某個時間之前完成。我可以後時間戳和前時間戳的差別通常的計算做到這一點,但我開始想,如果
- 被這個常用於TDD完成,編寫測試失敗,如果一個方法/函數效率不高,然後重構使其效率更高?
- Python的unittest有一個很好的方法來做到這一點嗎?
我正在使用Python的unittest。如何測試一個Python函數需要一定時間才能完成
我想寫一個測試,確保某個方法在某個時間之前完成。我可以後時間戳和前時間戳的差別通常的計算做到這一點,但我開始想,如果
一些公司對代碼速度進行了測試,對迴歸測試進行了排序,這些嘗試捕捉新代碼降低系統速度,如果它們遇到問題,您首先嚐試修復新代碼,仍然表現良好,如果您無法做到這一點,那麼您(產品負責人)可以決定新功能是否值得。
關於TDD:你不知道運行時間,所以不,你不能用猜測編寫測試,然後重構代碼,以便它會通過..除非你工作的東西非常具體,並有一個非功能性要求,就像一個嵌入式系統,必須在50ms內響應...
關於時間限制,這可能是一個要求。但是也許你想說的是,在單元測試的框架中,即對於小部分代碼,有這樣的要求是非常罕見的。 –
我不認爲測試失敗實際上意味着什麼。它可能因多種原因而失敗,例如在另一臺機器上的不同時機,在後臺運行的任何時機等。 –
您可以嘗試使用[timeit](http://docs.python.org/library/timeit.html )模塊來獲取需要的時間,然後編寫一個斷言來確保它在不到x秒的時間內完成。 –
人們過快地推薦與時間有關的所有東西。 'timeit'的目的是微代碼的小片段。對於真實世界中真實世界中應用程序的實時定時(在你想知道你的函數在真實負載下執行多長時間,而不是最快時間執行的時間),時間戳實際上是更好的要走的路。 –