免責聲明;初學者問題!代碼覆蓋率報告「代碼運行」,但不是由單獨文件單元測試「代碼覆蓋」
我的項目結構,高度簡化的問題的緣故,看起來是這樣的:
Project/
|-- main.py
|-- test_main.py
閱讀Jeff Knupp's blogpost on unit testing和寫作的測試,各種各樣我想看看現在多少我的代碼是由測試所覆蓋後。所以我安裝coverage.py和下面讓我困惑:
$覆蓋運行main.py(顯示我的打印/從腳本登錄)
$覆蓋報告main.py
名稱,撐條,小姐,覆蓋
main.py,114,28,75%
的事情是,我不從主腳本內運行單元測試,也沒有我想我應該。我在提交之前手動運行test_main.py中的所有測試,並知道他們的事實而不是覆蓋了我所有語句的75%。在閱讀coverage documentation後,我懷疑我的單元測試實現......我是否需要運行測試的main.py中的觸發器?
於是,我同我的測試腳本:
$覆蓋運行test_main.py(顯示我所有測試的 'OK' 試運行)
$覆蓋報告test_main.py
名稱,撐條,小姐,封面
test_main.py,8,0,100%
但是,這只是向我展示了我在執行腳本期間在測試語句中「擊中了」100%的代碼。那麼爲什麼如果它只是顯示已使用的代碼,則覆蓋範圍列在"increase test coverage"之下。
我真的很想看看我的main.py有多少被test_main.py覆蓋,我很確定我缺少一些基本概念。有人能詳細說明嗎?
在我的Ubuntu機器上運行的「覆蓋運行test_main.py;覆蓋報告」不僅使我對test_main.py的報告。在我的Windows機器這給:
名稱,支桿,小姐,封面
main.py,114,74,35%
test_main。PY,8,0,100%
TOTAL,122,74,39%
覆蓋報告仍然沒有意義:
- 的test_main涵蓋9出的134行代碼和主要覆蓋範圍內的10個函數中的1個不是35%
- 爲什麼它報告test_main的覆蓋率,這些是測試,如果這不是100%,它會很奇怪,因爲我' m運行所有測試以查看我的cov erage ...
- 我在這裏做錯了什麼,或者看着它的這種方式是bollocks,計算平均「覆蓋率」,而總結與代碼本身的測試提供沒有見解,在我的初學者意見是錯誤的
沒有看到您的代碼很難回答。所有的coverage.py都可以告訴你你運行的是什麼代碼,以及你可以運行什麼代碼,並告訴你它們的區別。你已經展示了兩份報告,這兩份報告都聲稱是關於main.py的,但第一份報告中有114份報告,第二份報告說有8份報告。這不應該改變。你能仔細檢查細節嗎? –
@NedBatchelder對不起,小錯 - 底部報告與test_main.py相關。我仍然不明白在* test *上下文中覆蓋是如何有用的,它在檢查哪些代碼可能永遠不會運行或其他用途上看起來很有用。 我想通過單元測試瞭解我的代碼的哪些部分被*覆蓋*(因此覆蓋率我認爲...),但這只是向我展示了在兩個單獨的報告中運行的代碼。因此,我可以用coverage.py完成我想要的唯一方法是複製test_main.py中的所有main.py代碼並在腳本中進行測試? – MarcelTon
您可以使用coverage.py來衡量您的測試套件的執行情況。它會告訴你產品代碼中的哪些行是運行的,哪些不是。做到這一點:「覆蓋運行test_main.py;覆蓋報告」。如果您不想將報告限制爲只有一個文件,則不要將報告名稱放在報告報告上。 –