[Jenkins] 在 Jenkins 任務中呈現程式碼覆蓋率 (code coverage)

[Jenkins] 在 Jenkins 任務中呈現程式碼覆蓋率 (code coverage)

今天想要建立一個 Jenkins 任務,

讓它可以在執行單位測試的同時,

順便把程式碼覆蓋率 (code coverage) 算出來~

 

1. 產生 coverage xml 檔

首先,利用 coverage 這個 Python 模組,

在我們使用 pytest 執行單位測試時,讓 coverage 一邊記錄被執行到的部分,

最後將結果輸出到 cov_common.xml 檔:

import coverage

cov = coverage.coverage(source=("/project",), omit=["tool/*", "3rd_party/*", "unittest/*"])
cov.start()
pytest.main(args=args)
cov.stop()
cov.save()
cov.xml_report(outfile="cov_common.xml")

 

2. 在 Jenkins 中顯示 Code Coverage

在 Jenkins 任務中的「建置後動作」,

新增一個 Publish Cobertura Coverage Report 動作,

把 xml 的路徑輸入就行囉:

 

當 Jenkins 任務執行時,就可以看到 Coverage report:

 

點進去的話,可以看到一個概述,

可以知道整體以及個別 package 的程式碼覆蓋率:

 

再點進去就是每個 python 模組的覆蓋率:

 

再點下去,就會將每個模組的程式碼直接列出,

綠色的部分代表有被單元測試執行過至少一次,

紅色的部分沒有被執行過:

 

從程式碼列表中,我們可以找出單元測試沒有涵蓋的範圍,

增加不同的單元測試,確保每行程式都盡可能有被測試到~

當然覆蓋率越高時,並不能代表所有的執行路徑都被執行過,

但覆蓋率過低時,的確代表有非常多地方是可能有未知的隱藏錯誤的。

因此還是會想要將覆蓋率拉高到一定程度囉 (像是 80% 以上)~

(本頁面已被瀏覽過 956 次)

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料