我們都知道,在做單元測試框架中有UnitTest和Pytest,前者是Python中自帶無需安裝,Pytest需要安裝,今天我們來講的就是Pytest,當然如果是做自動化,建議兩個都要掌握一下,可以針對實際業務靈活使用
廢話不多說,開幹!
pip insatll pytest
如果要解決安裝滿的問題,可以使用豆瓣源:
pip install -i https://pypi.douban.com/simple pytest
檢視安裝是否成功和安裝版本:
pytest --version
我們使用別人的框架,就得遵守別人的規則,所以pytest也有相應的規則:
1:用例檔案:所有檔名為 test_ 開頭 或者 _test 開頭的檔案會被識別為用例檔案。
2:用例類,測試檔案中每個Test開頭的類就是一個測試用例類。並且不能帶有 init 方法
3、測試用例:測試類中每個test開頭的方法就是一條測試用例,測試檔案中每個test開頭的函數也是一條測試用例
通俗來說,就是不管是檔名,類名或者函數名命名必須是test的
不理解沒問題,直接來實戰
# 函數形式 def test_demo(): # 要求函數名以 test 開頭 """測試函數""" print('我是函數形式的pytest,我可以是一條用例哦')
我們來執行一下:
用例成功通過
那我們是怎麼執行的呢
右鍵執行或者右上角執行都可以,如果結果報錯,檢查一下pycham中預設測試選的是哪個
選擇對應的pytest即可,我這裡自動檢測了pytest,所以無需設定
還可以怎麼執行呢
以命令列的形式執行:
直接進入到當前專案下,輸入pytest,就可以自動執行了
這裡我們得再補充下:
在pytest後加 -v 或者 -s,分別有不同的含義
我們以其中一個範例:
除了函數形式編寫,還有類的形式編寫,下邊我們以類的形式編寫用例
# 測試類形式 class TestDemo(object): # 正常定義類, 但是測試類名必須以 Test 開頭 """測試範例類""" def test_01(self): # 正常定義⽅法, 但是測試⽅法名必須以test開頭 print('我是測試類下的方法1') def test_02(self): print('我是測試類下的方法2')
這個遵循我們的規則第二條,測試類以Test開頭
當然我們再次執行發現兩條用例都已執行成功,現在我們都是自己執行的,難道pytest就沒有一套執行方式嗎?當然有的,pytest有一個main方法也是可以執行程式碼檔案的
if __name__ == '__main__': pytest.main(['-s', 'test01.py'])
這個我們簡單分析一下,就是這是main主函數入口,呼叫了pytest的main方法,方法裡引數放在一個列表裡
其他的我們需要什麼引數就往裡填就可以了
到了這裡,基本使用我們就講完了,實際看完感覺是不是也就那樣,我們總結下,本篇講的pytest環境安裝,pytest基本規則,pytest函數和類的使用,main函數執行方式
還有前置、後置、組態檔、引數化(資料驅動)、斷言、重試機制、外掛報告,不要著急慢慢來