Fixture
- fixture是一種類似于setup、teardown,用于測試前后進行預備、清理工作的代碼處理機制
- 相比于setup、teardown來說,fixture命名更靈活,局限性更少
- 使用
conftest.py
配置里面可以實現數據共享,不需要import就能自動找到一些配置
使用范圍
function范圍
- 我們首先需要在一個自定義方法前寫上fixture的注解
- 如果不寫范圍,則該fixture默認為function范圍
- 我們需要在要求調用該fixture的方法的形參處,寫上自定義方法名
- 我們也可以使用
autouse=True
來讓該文件內的每一個函數都自動調用fixture,同時避免我們手動寫自定義方法名
class范圍
- 我們首先需要在一個自定義方法前寫上fixture的注解,并且將范圍設置為class
- 當我們在該文件內不設置class類時,如果將autoclass設置為True,那么pytest會將每一個方法都視為一個類,每一個方法都會調用該fixture
- 當我們將這些方法都放進一個類時,那么只有類最開始會調用一次fixture
- 如果該文件內有很多個類,我們只想讓其中的某一個類調用fixture,那么只需要將autouse設為False,并且在某一個類中的某一個方法的形參上加上該fixture即可
- 當我們在該文件內不設置class類時,如果將autoclass設置為True,那么pytest會將每一個方法都視為一個類,每一個方法都會調用該fixture
module范圍
- 我們首先需要在一個自定義方法前寫上fixture的注解,并且將范圍設置為module
- 如果我們將autouse設為false,并且在多個方法和類中加上該fixture,那么整個py文件也只會調用一次fixture,且是在第一次加上該fixture的位置處調用
- 如果我們將autouse設為True,那么只會在整個py文件的最開始調用一次fixture
- 如果我們將autouse設為false,并且在多個方法和類中加上該fixture,那么整個py文件也只會調用一次fixture,且是在第一次加上該fixture的位置處調用
session范圍
- 我們首先需要在對應目錄下創建一個新文件方法前寫上fixture的注解,并且將范圍設置為session
- 然后我們可以在控制臺用pytest來運行該目錄,可以看到對于一次運行多個文件,fixture也只調用了一次,且是在最開始調用的
- 然后我們可以在控制臺用pytest來運行該目錄,可以看到對于一次運行多個文件,fixture也只調用了一次,且是在最開始調用的
conftest.py
-
我們可以將fixture的定義放在conftest.py方法內部,統一管理
-
conftest.py為固定格式,不可以修改名字
-
使用conftest.py文件中的方法時,無需導入,直接在方法的參數處引入形參即可
-
conftest.py僅作用于當前所處文件夾和下屬文件夾
-
如果在conftest.py中,范圍為function的fixture,設置autouse為True,那么當前所處文件夾和下屬文件夾的所有測試用例都會自動調用該fixture
- 一個測試用例可以接收多個fixture
- 一個測試用例可以接收多個fixture
fixture通過return返回數據
- 我們可以在fixture中使用return來返回數據,供其他測試用例調用
- 在測試用例中,我們將fixture方法名作為實參傳入后,pytest會自動將該fixture的返回值傳給該同名形參,因此我們可以在后續代碼中直接使用