Python UnitTest的測試個案執行、測試報告、測試覆蓋率報告
這篇文章主要說明當完成的 Python unitTest有沒有什麼工具可以幫助我們執行測試並產生測試結果報告?
這樣的工具最好可以跟其他工具容易的整合與使用。
可以不需要修改原本完成的 unitTest的情況下就可以執行
可以不需要額外的整合就可以產生很完整的測試報告HTML, XML 等格式。
在 python可以協助執行 unitTest 的工具主角就是 nose 與 PyTest.
安裝nose
Nose 是 Python unittest 的套件之一,安裝的方式也很簡單。
pip install nose |
nose 是什麼呢? nose 可以幫我們自動執行所有 Python 完成的 unitTest
安裝完後要怎樣執行呢?
$ nosetests
nose 就會自動搜尋所有副檔名為 xxxxx_test.py
強調 “自動” + “所有” !!
想像我們寫了許多的 Python unitTest.
A_test.py, B_Test.py, C_Test.py……
如果要一一執行是很麻煩的事情,而且要產生 HTML/XML 測試報告也有困難.
因此 Nose 就可以很容易的解決這兩個問題
- 執行unitTest
- 產生測試報告
這篇介紹幾個常用的用法
列出所有 nosetests 的指令參數說明:
nosetests –help |
列出所有找到的unitTest,但是不執行
nosetests –collect-only -v -s |
執行上一次失敗的測試個案
nosetests –failed |
輸出 HTML 測試報告
nosetests –with-html-output |
輸出 XML 測試報告
什麼情況下我們會希望輸出成 XML 呢? Jenkins!
如果我們希望測試結果可以顯示在 Jenkins Dashboard 那麼只要將測試結果輸出成為 XML即可
nosetests –with-xunit |
Code Coverage
安裝
pip install nose-cov |
執行
nosetests –with-coverage –cover-html |
執行完畢就會在該目錄下產生 \cover\*.html
測試覆蓋率報告範例
該 HTML coverage report 為動態的 HTML page,
例如我們可以點選 Selenium 進一步點選數字 “2”
可以知道是哪兩行沒有被測試到。是不是很方便的報告?
PyTest
除了 nosetests 之外,另外一個選擇是 PyTest
安裝: pip install pytest
筆者認為其實 PyTest 跟 noseTests其實沒有太大區別。功能跟可以完成的事情相同的
熟悉使用 noseTests 即可。
參考資料
https://nose-plugins.jottit.com/
https://github.com/passy/noselettuce