2014-01-06 34 views
2

比方說,我有以下的測試腳本:快速的方法來測試所有符號的模塊定義的,而不全單元測試覆蓋

def b(): return 1 

def a(): 
    b() 
    c() 

該模塊有一個bug:c()沒有定義/進口。但是運行這個腳本不會失敗,因爲沒有調用a(),因此c()並不是真的需要。但一旦a()被調用,例如從另一個模塊調用,或者每當我修改腳本調用a()時,它都會失敗。

在這種非常簡單的情況下,使用unittest覆蓋所有可能的執行路徑很容易,這是可行的。不幸的是,我的代碼非常複雜,我沒有足夠的時間準備單元測試來覆蓋所有可能的執行路徑(這本身就是一個問題,我希望將來可以解決,但目前不可能)

是否有任何方法檢查所有執行路徑中的所有符號是否爲特定模塊定義,而不實際測試所有執行路徑?

回答

3

pylintpyflakes這樣的棉絨將通過代碼的靜態分析來檢測這類事情。

它們距離完美還很遙遠,因爲在像Python這樣的動態語言中不可能覆蓋每條可能的路徑 - 而且,正如您所說,沒有實際運行這些路徑。根據我的經驗,儘管他們確實發現了很多錯誤。

+0

太好了,謝謝。我對這些沒有經驗,但我會盡力去嘗試。我希望它們很容易使用,至少可以獲得基本的報告。 – dangonfast

相關問題