2014-09-18 50 views
3

我有一個項目大約10k線,我試圖確保一切都被覆蓋。如何確保我的測試觸及我的代碼庫的每一行?

我知道有很多更復雜的考慮因素,但作爲基準,我想知道是否有辦法讓pytest告訴我有多少行,以代碼庫中行數的百分比表示。例如,如果在if/else控制結構中,測試只覆蓋True情況,或者根本不運行某個函數,它可以通知我。

這當然偏向於笨重的單元測試,而不是精確的單元測試,但在這個階段我仍然會發現它很方便。

我想這是可能的,因爲工具如line_profiler可以提供信息。

+2

您是否在搜索覆蓋率測量工具? – Sebastian 2014-09-18 21:53:25

+1

我做過了,但沒有使用「覆蓋率」一詞。我想這就是所有結果都隱藏起來的地方。 – user3557216 2014-09-18 21:55:52

+0

請記住,coverage是一個有用的指標,但不能*證明*你的代碼是好的,只是你已經記下了所有的路徑。如果你的測試不正確,你的代碼可能仍然是錯誤的。 – 2014-09-18 22:29:03

回答

4

Coverage可能是你正在尋找的工具:

Coverage.py措施代碼覆蓋率,通常在測試執行。 它使用Python標準庫中 中提供的代碼分析工具和跟蹤鉤子來確定哪些行是可執行的,並且已經執行了 。

覆蓋率可以衡量您所覆蓋的線條,並幫助您識別待處理線條。例如,在coverage documentation中,您可以看到它生成的報告類型:

$ coverage report -m 
Name      Stmts Miss Cover Missing 
------------------------------------------------------- 
my_program     20  4 80% 33-35, 39 
my_other_module    56  6 89% 17-23 
------------------------------------------------------- 
TOTAL      76  10 87% 
+1

優秀 我最終使用的特定命令是 'python2 -m coverage運行--source mymod test_mymod.py && python2 -m覆蓋報告' – user3557216 2014-09-18 22:18:54

相關問題