python-pytest學習

 

一:pytest基於unittest之上的單元測試框架
1.自動發現測試模塊和測試方法;
2.斷言使用assert+表達式便可;
3.能夠設置會話級、模塊級、類級、函數級的fixtures :數據準備+清理工做
4.豐富的插件庫 http://plugincompat.herokuapp.com/html

安裝命令 pip install pytest
安裝html報告的插件:pip install pytest-htmlweb

二:pytest收集測試用例的規則:
1.默認從當前目錄中搜集測試用例,即在哪一個目錄下運行pytest命令,就從哪一個目錄中搜索;
2.搜索規則:
1)先找py文件。test_*.py或者*_test.py
2) 找模塊下面,以test_開頭的函數名稱。
3)找模塊下面,以Test開頭的類(沒有__init__函數)中,找以test_開頭的函數。session

三:pytest 之 mark
對測試用例打標籤。執行用例就能夠根據標籤過濾用例。
標記功能:測試類和測試用例前面 ,@pytest.mark.標籤名app

四:pytest 之 定義fixture框架

@pytest.fixture(scope=)
def init_web():
#前置
yield 返回值
#後置函數

1. fixture : 即測試用例執行的環境準備和清理。
2. 在unittest中即指:setup(),teardown(),classSetup(),classTeardown()
3. fixture主要的目的是爲了提供一種可靠的和可重複性的手段去運行那些最基本的測試內容。
4. 定義fixture:
(1)把一個函數定義爲fixture很簡單,在函數聲明以前加上@pytest.fixture
(2)表示此函數爲測試環境數據的準備和清理
(3)fixture內部如何區分環境準備、環境清理呢:
A. 在函數內使用yield關鍵字
B. yield關鍵字後的代碼,就是環境清理的代碼,即在測試用例執行完成以後會執行的代碼單元測試

5. fixture的做用域:
(1)fixture的參數中,有scope做用域
(2)function:每一個test都運行,默認是function的scope。即unittest的Setup和tearDown
(3)class:每一個class的全部test只運行一次,即unittest的setupClass和teardownClass
(4)module:每一個module的全部test只運行一次
(5)session:每一個session只運行一次測試

6. fixture設置返回值:
yield 返回值插件

7. fixture的調用:
A. 在測試用例中直接調用:將fixtures的函數名稱做爲測試用例的參數,若是fixture有返回值,那麼測試用例中的fixture函數名字就接收返回值
B. 用fixture裝飾器調用fixture:在測試用例/測試類前面加上@pytest.mark.usefixtures('fixture函數名稱')
C. 用autos調用fixture:定義fixture時,有一個參數是autouse,默認設置爲false:當默認爲false時,就能夠選擇A/B兩種方式來調用fixture;
當設置爲true時,在一個session內的全部test都會自動調用這個fixturehtm

五:pytest 之 參數化在測試用例的前面加上: @pytest.mark.parametrize("參數名",列表數據)參數名:用來接收每一項數據,並做爲測試用例的參數列表數據:一組測試數據

相關文章
相關標籤/搜索