pytest介紹及安裝
文章鏈接:https://mp.weixin.qq.com/s/mxCOVRIetU7efqMdseotkw
一. pytest介紹
pytest is a mature full-featured Python testing tool that helps you
write better programs. pytest is a framework that makes building simple
and scalable tests easy. Tests are expressive and readable—no
boilerplate code required.
—— 摘自 pytest 官方介紹,地址:http://www.pytest.org/en
pytest是一個成熟且功能齊全的Python測試工具,可以幫助您編寫更好的程序。pytest是一個框架,它使構建簡單且可伸縮的測試變得容易。測試應該是富有表現力和可讀性的 —— 不需要樣板代碼。
以上即對pytest官方介紹的翻譯,pytest具有以下一些特點:
1 它既是一個軟件測試框架又是一款命令行工具;
2 簡單容易上手;
3 可以自動發現測試用例并執行;
4 斷言使用Python原生的assert語句,不需要記住self.assertEqual這樣的名稱;
5 支持運行unittest和nose編寫的測試用例;
6 擁有豐富的插件體系結構,支持用戶自行開發的插件。
二. 安裝pytest
直接從官方PiPy源安裝pytest即可,進入虛擬環境,輸入以下安裝命令:
安裝命令:pip install -U pytest
接下來檢查安裝版本的正確性,顯示安裝pytest工具的版本信息:
輸入命令:pytest --version
三. PyCharm配置
下面在PyCharm中新建項目及配置pytest。PyCharm 是一款由JetBrains開發的功能強大的Python
IDE(Integrated Development Environment
集成開發環境)工具,其提供了智能代碼完成、代碼檢查、即時錯誤高亮顯示和快速修復,以及自動代碼重構和豐富的導航功能。
在PyCharm中選擇“File-New Project”,彈出新建項目對話框后,依次選擇新建一個純Python項目,輸入項目名稱,選擇前面我們已經建好的虛擬環境(pyenv_1)。
選擇“File - Settings”,彈出設置頁面后,選擇“Tools - Python Integrated
Tools”進行Python集成工具的設置。在“Default test
runner”默認測試運行者處選擇“py.test”,即后續將pytest作為默認的測試執行工具。
四. 一個簡單的測試
下面我們新建一個簡單的測試用例,并以pytest的方式執行先看看效果。新建一個普通的Python文件,命名為:test_01.py,輸入以下代碼:
def add(x, y):
return x + y
def test_add():
assert add(1, 9) == 10
首先定義了一個加法函數(add),返回兩個參數相加之和。其次針對這個加法函數編寫了一個測試用例(test_add),并通過Python原生的assert斷言,斷言調用該加法函數計算1加9之和預期是10。
這里的測試用例命名約定以“test_”開頭,pytest會自動搜索并運行該命名格式的測試用例。
在PyCharm中右鍵點擊“test_01.py”文件,從彈出的菜單中選擇“Run 'py.test in test_01.python'”,即通過pytest運行選中的文件。
測試結果中顯示pytest自動搜索到了一個測試項目,并自動運行了其中的測試用例,顯示的執行進度達到了100%,執行結果顯示該測試通過。文件名后面的點“.”也表示執行通過。
接下來修改前面的代碼,我們再多加一個測試用例,看看執行結果有什么不同。
def add(x, y):
return x + y
def test_add1():
assert add(1, 9) == 10
def test_add2():
assert add(3, 0) == 3
執行結果中顯示,發現了2個測試項目,而且顯示了兩個點“.”號,說明有兩個測試用例均被執行通過。
前面的代碼中,斷言結果全部通過,這次我們再引入一個注定要失敗的測試用例(斷言3加0等于8):
def add(x, y):
return x + y
def test_add1():
assert add(1, 9) == 10
def test_add2():
assert add(3, 0) == 8
這次可以從結果中非常清楚的看到,一共兩個測試條目,一個成功(用點表示),一個失敗(用F表示),而且下面顯示了具體失敗的代碼位置和異常類型。
——內容引自微信公眾號《隔壁老王說測試》https://mp.weixin.qq.com/s/mxCOVRIetU7efqMdseotkw