Fixture使用說明:
-
fixture 函數命名不要以test開頭,儘量與用例區分開
-
一個fixture可以供多個函數來使用
-
fixture可以有返回值,其返回值可以被函數來使用
-
一個方法可以有多個fixture
-
fixture之間可以相互調用
1、一個方法可以有多個fixture、一個固件可以供多個函數來使用,如下圖所示:
2、fixture返回執被其函數來使用,如下圖所示:
固件中添加返回值,在測試方法中可以通過固件名來表示返回值
3、固件之間相互調用
4、fixture 的作用範圍(scope)
fixture裏面有個scope參數可以控制fixture的作用範圍:session>module>class>function
-
-function:每一個函數或方法都會調用
-
-class:每一個類調用一次,一個類中可以有多個方法
-
-module:每一個.py文件調用一次,該文件內又有多個function和class
-
-session:是多個文件調用一次,可以跨.py文件調用,每個.py文件就是module
4.1、scope = "function"
@pytest.fixture() 如果不寫參數,參數就是 scope="funciton", 它的作用範圍是每個測試用例之前運行一次,銷燬代碼在測試用例之後運行
scope = "class"
fixture爲class級別的時候,如果一個class裏面有多個用例,都調用了fixture,那麼此fixture只在此class裏所有用例開始 執行一次 ,如果類外面方法也調用了fixture,那麼此方法也會執行一次
從圖上來看,fixture函數只在第一個test01函數執行之前,被執行一次,其他函數均未執行
從上圖來看類外面方法也調用了固件,此方法運行之前也會調用此固件
4.2、scope="module"
fixture爲module時,在當前.py腳本里面所有用例開始前只執行一次
從下圖來看,當參數值爲 module的時候,此模塊腳本在執行之前只執行一次固件
4.3、sope="session"
fixture 爲session級別是可以跨.py 模塊調用的,當多個 .py 文件中的用例需要調用同一個fixture的時候,可以將fixture設置爲 scope="session", 並且將其寫入到 conftest.py 文件中