Pytest ------ fixture 參數值傳遞 +固件之間相互調用 + 作用範圍(五)

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 文件中
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章