[Python] 用 Pytest 來做 Unit Test

閱讀時間約 7 分鐘

什麼是Pytest?

Pytest是一款強大的Python測試工具,支援平行化測試,使用上簡單方便,適合用在各種不同類型的軟體架構,也適用於RD、QA或獨立測試小組,也適合正要導入TDD的公司。
Python Developer Survey 2018 Results 被選為最受歡迎的Testing Framework。(不多說了自己看吧 XD)

來寫測試吧!

  • 先用pip安裝pytest:
pip install pytest
  • 測試專案 - Folder Structure [Link]
pytest-demo
│ README.md

├─libs
│ module.py
│ __init__.py

└─tests
test_module.py
  • libs\module.py
  • tests\test_module.py
1. 在 module.py 定義一個名為 Module 的 class,再將class import 至 test_module.py
2. 接著,宣告兩個測試function,命名方式為test_開頭
3. 將pytest-demo這個路徑加入PYTHONPATH。 [Windows] [Linux]
我們將驗證 Module.get_true() 的回傳值為True,而 Module.get_false() 回傳值為 False
在pytest-demo路徑下執行測試:
pytest-demo> pytest
==================== test session starts ====================
platform win32 -- Python 3.6.2, pytest-5.0.1, py-1.8.0, pluggy-0.12.0
rootdir: ..\pytest-demo
collected 2 items
tests\test_module.py ..     [100%]
==================== 2 passed in 0.03 seconds ====================
測試成功的執行了! 但...我想看更詳細的訊息怎麼辦?
使用 pytest -v 或是 pytest --verbose 會得到以下結果~~~~
\pytest-demo> pytest -v
==================== test session starts ==================== platform win32 -- Python 3.6.2, pytest-5.0.1, py-1.8.0, pluggy-0.12.0 -- ..\programs\python\python36-32\python.exe
cachedir: .pytest_cache
rootdir: ..\pytest-demo
collected 2 items
tests/test_module.py::test_get_true_func PASSED [ 50%] tests/test_module.py::test_get_false_func PASSED [100%]
==================== 2 passed in 0.03 seconds ====================
太神啦! 簡單快速地完成了! 
但我們更改一下 get_true() 的回傳值為 False 來產生測試失敗的狀況:
\pytest-demo> pytest -v
==================== test session starts ====================
platform win32 -- Python 3.6.2, pytest-5.0.1, py-1.8.0, pluggy-0.12.0 -- ..\programs\python\python36-32\python.exe
cachedir: .pytest_cache
rootdir: ..\pytest-demo
collected 2 items
tests/test_module.py::test_get_true_func FAILED [ 50%] tests/test_module.py::test_get_false_func PASSED [100%]
==================== FAILURES ==================== ____________________________________________________________ test_get_true_func _____________________________________________________________
def test_get_true_func():
> assert Module.get_true() is True
E assert False is True
E + where False = <function Module.get_true at 0x036A0930>()
E + where <function Module.get_true at 0x036A0930> = Module.get_true
tests\test_module.py:5: AssertionError
==================== 1 failed, 1 passed in 0.07 seconds ====================
在 Windows PowerShell Console 下會有顏色可以很簡單的區分 PASS or FAIL

參考資料:

為什麼會看到廣告
1會員
9內容數
留言0
查看全部
發表第一個留言支持創作者!
你可能也想看
如何用Python篩選每個人的第一筆紀錄?用Python篩選每個人的第一筆紀錄
Thumbnail
avatar
果農
2024-06-14
如何用Python建立新欄位(assign)?介紹如何用assign函數在Python中建立新欄位
Thumbnail
avatar
果農
2024-06-03
如何用Python繪製區域圖?如何用Python繪製區域圖
Thumbnail
avatar
果農
2024-06-03
如何用Python繪製堆疊直條圖(以2022年直轄市市長選舉政治獻金為例)如何用Python繪製堆疊直條圖(以2022年直轄市市長選舉政治獻金為例)
Thumbnail
avatar
果農
2024-05-30
如何用Python繪製組合圖如何用Python繪製組合圖
Thumbnail
avatar
果農
2024-05-27
[5 min python] 字串格式化使用 F strings從Python 3.6開始,可以使用f-Strings這個新的方法來做字串的格式化。f-Strings 也稱為“格式化的字串文字”,是一種字串文字,其開頭是 f,後面是大括號,其中包含將被替換為其值的表示式。這些表示式在執行時被評估,然後使用 "format" 協議進行格式化 例如
Thumbnail
avatar
艾利斯
2021-12-28
台股 星期幾漲跌機率探索|用 python 告訴你台股星期幾最容易上漲示範如何用 python,找出台股星期幾最容易上漲,只要按分享的程式碼就能輕易計算, 另外,也可以把加權指數的收盤資料更換成其他個股的收盤資料, 就能算出該個股星期幾最容易上漲了,有機會再分享。  把漲跌次數換成累計報酬率之後,其實不管是星期幾都沒有明顯容易上漲或下跌, 跟單純只看機率的結果不一樣,
avatar
弄什麼大數據
2021-12-18
3分鐘學會用python計算報酬率|加權指數|Python 財金系列|用pandas 進行3分鐘學會用python計算加權指數報酬率,並且用pandas 進行條件篩選 濾掉金融海嘯時期,並篩選出漲跌幅大於1%的日期 https://youtu.be/EMfclSESgBo
Thumbnail
avatar
弄什麼大數據
2021-12-06
python 邊緣與輪廓檢測邊緣與輪廓檢測 edge detection
Thumbnail
avatar
薰魚
2021-09-24