天天看點

pytest固件fixture不同層級作用域如何調用

作者:測試媛小懶

前言

在之前的一篇文章中講解了fixture結合conftest.py檔案如何簡單實作自動化。實際fixture結合conftest.py檔案的使用就是一種fixture的會話層級session的實戰用法。

下面開始fixture其他層級的詳細講解:

1、首先在使用fixture之前我們得先了解他是幹什麼的,有什麼作用?

fixture的主要用途就是——通過裝飾器的方式把所有測試方法進行有效組織的過程。

@pytest.fixture(scope="function",params=none,autouse=false,ids=none,name=none)

2、scope:作用域

(1)function:在函數之前和之後執行——每個函數或方法都會調用

①手動調用的方式是在測試用例的參數加入fixture的名稱

②若fixture有通過return 或yield傳回值,可以把這個值傳遞到測試員用例當中

(2)class:隻在每個類所有用例開始前調用一次,一個類可以用多種方法

①手動調用的方式在類的上面添加@pytest.mark.usefixtures()裝飾器

pytest固件fixture不同層級作用域如何調用
pytest固件fixture不同層級作用域如何調用

(3)package/session:在整個項目會話之前和之後執行,多個檔案調用一次,可以跨Python檔案調用,每個.py就是moudule

①一般結合conftest.py檔案來實作

(4)module:每個.py檔案調用一次,該檔案内又有多個function和class

pytest固件fixture不同層級作用域如何調用
pytest固件fixture不同層級作用域如何調用

3、autouse:自動執行,預設是false

4、param參數:

(1)如何把值傳到固件fixture,在fixture函數的參數加入request來接收參數,後通過request.param來取值

(2)ids:不能單獨使用,必須與params參數一起使用,目的為參數起别名

5、name參數:給fixture起别名,一旦使用,就不能再用fixture名稱

各方法優先級:fixture會話>fixture的class級别>setup_class>fixture的function>setup

繼續閱讀