天天看點

Python 測試架構之 Unittest & Pytest

歡迎關注【無量測試之道】公衆号,

python程式設計學習資源幹貨、

python+appium架構app的ui自動化、

python+selenium架構web的ui自動化、

python+unittest架構api自動化、

文章下方有公衆号二維碼,可直接微信掃一掃關注即可。

unittest

unittest是python自帶的一個單元測試架構

unittest中包含了對一些正常的測試用例體系性的支援,主要包括:

test fixture

test case

test suite

test runner

建立.py檔案,并選擇檔案類型如下圖所示:

Python 測試架構之 Unittest & Pytest

點選ok後預設生成的檔案内容如下:

Python 測試架構之 Unittest & Pytest

可以在此檔案的内容基礎上進行改造,寫自己的測試case,改造後的内容如下:

以上代碼是标準的unittest測試架構中的基礎結構。

pytest

pytest中定義測試用例主要有三種方式:

相容unittest,已有的unittest庫和檔案都可以直接進行調用

可以基于最簡單的類進行定義,如果一個類裡面沒有初始化方法并且以test開頭,系統便會認為這是一個測試用例

可以直接定義測試函數來定義測試用例

安裝pytest:

1、 使用指令:pip install pytest

2、 在pycharm編譯器裡的配置中添加,如下截圖所示

Python 測試架構之 Unittest & Pytest
Python 測試架構之 Unittest & Pytest

pytest安裝成功後,将之前預設的runner由unittest修改為:pytest,修改步驟如下截圖所示:

Python 測試架構之 Unittest & Pytest

将pytest配置成預設的runner後,建立一個.py檔案為:test_demos.py

内容如下:

Python 測試架構之 Unittest & Pytest

點選如上圖所示的綠色小箭頭,可檢視到第一行提示:使用pytest來運作test_demos.py檔案,運作結果正常

Python 測試架構之 Unittest & Pytest
Python 測試架構之 Unittest & Pytest

将python內建工具由unittest切換成pytest後,再來運作之前寫的使用unittest架構編寫的代碼,如圖所示:

Python 測試架構之 Unittest & Pytest

 類名前的綠色小箭頭提示可以使用:pytest來運作test_unittest.py檔案,pytest相容unittest,可以直接使用pytest直接調用unittest庫和檔案。運作結果如下所示:

Python 測試架構之 Unittest & Pytest

pytest的用例識别規則:

test類包含的所有test_方法

不在class中的所有test_*函數

類中不能初始化方法

斷言使用基本的assert即可

檔案範圍:

test_*.py 

*_test.py

用例執行順序的控制方法如下圖所示:

Python 測試架構之 Unittest & Pytest

完整代碼如下:

pytest支援分組:

1、@pytest.mark.webtest

2、@pytest.mark.sec

3、pytest -m “webtest and not sec”

調用方法如下圖所示:

Python 測試架構之 Unittest & Pytest

在terminal裡輸入指令:pytest -m fail來實作隻執行指定的用例case的目的。

參數化用例的使用方法的執行個體代碼如下所示:

參數化用例方法可以達到代碼重複利用的效果。

單獨來執行test_answer2這個用例方法時會發現實際共執行了4次該方法,input與expect的值分别是參數化中的(5, 6),(7, 8),(0, 1),(2, 2),結果如下:

Python 測試架構之 Unittest & Pytest

總結:今天分享的内容是python測試架構中常用的架構unittest與pytest相關内容,在自動化測試過程中可以進行實操,提高測試效率。

備注:我的個人公衆号已正式開通,緻力于測試技術的分享,包含:大資料測試、功能測試,測試開發,api接口自動化、測試運維、ui自動化測試等,微信搜尋公衆号:“無量測試之道”,或掃描下方二維碼:

Python 測試架構之 Unittest & Pytest

 添加關注,讓我們一起共同成長。