Python UnitTest的測試個案執行、測試報告、測試覆蓋率報告

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”

可以知道是哪兩行沒有被測試到。是不是很方便的報告?

Coverage Report

 

PyTest

除了 nosetests 之外,另外一個選擇是 PyTest

安裝: pip install pytest

筆者認為其實 PyTest 跟 noseTests其實沒有太大區別。功能跟可以完成的事情相同的

熟悉使用 noseTests 即可。

 

參考資料

https://nose-plugins.jottit.com/

https://github.com/passy/noselettuce

Leave a Reply

Your email address will not be published. Required fields are marked *