Python的pytest測試框架中fixture的使用詳解
一、fixture定義
fixture是處理前后置處理的,也叫測試固件,只需要使用@pytest.fixture() 即可定義
@pytest.fixture() # fixture裝飾器
def first(): # 定義一個函數(shù)
print("setup...") # 函數(shù)內(nèi)容二、fixture前置處理
定義好fixture函數(shù)后,如何應用呢?通常我們只需要在測試函數(shù)中,傳入Fixture的這個函數(shù)名即可
import pytest # 導入pytest
@pytest.fixture()
def first():
print("setup...")
def test_pytest(first): # 定義測試函數(shù),在此處引用fixture函數(shù)名即可
print("first test")
if __name__ == '__main__': # 定義主函數(shù)
pytest.main() # 調(diào)用pytest說明:在執(zhí)行test_pytest函數(shù)之前,會先執(zhí)行first函數(shù),因為first是前置函數(shù),會在測試函數(shù)之前執(zhí)行。如果需要每個測試函數(shù)都自動執(zhí)行,則可以設(shè)置autouse的參數(shù)為True,即autouse=True
@pytest.fixture(autouse=True) # 傳入autouse參數(shù)
def first():
print("setup...")三、Fixture的作用域
@pytest.fixture()中scope參數(shù)是控制Fixture的作用域的,可根據(jù)實際需要,調(diào)整運行方式,scope支持以下四種作用域,從大到小依次是:
- session (會話)
- module (模塊)
- class (類)
- function (函數(shù))
fixture默認的scope=function,所以我們不傳的時候,默認對測試函數(shù)生效 將scope指定為class,可以實現(xiàn)每個測試類前執(zhí)行一次 module指的是,在某個py文件執(zhí)行前,執(zhí)行一次,一個py文件就是一個模塊 session是指pytest的會話,即所有的測試執(zhí)行開始到結(jié)束,只會執(zhí)行一次的操作
四、Fixture的全局作用域
如果想在多個py文件中都可以引用這個前置操作,那么可以使用公共文件進行處理,即conftest.py,這個是固定文件名稱,不可修改。 這個文件在pytest中被大量使用,用于定義一些Hook相關(guān)函數(shù)以及注冊全局的Fixture函數(shù)。定義在conftest.py中的Fixture,都是全局的Fixture,可以在多個py文件中去使用
conftest.py
@pytest.fixture(autouse=True) # 傳入autouse參數(shù)
def first():
print("setup...")test_first.py
def test_pytest(first): # 定義測試函數(shù),在此處引用fixture函數(shù)名即可
print("first test")五、Fixture的后置處理
fixture的后置處理直接使用yield即可,可以幫助我們來做分割,在yield之前的屬于setup,而之后的就是teardown。
@pytest.fixture()
def first():
print("setup...")
yield
print("teardown...")
說明:yield后的內(nèi)容是執(zhí)行完測試用例才會執(zhí)行的,放在最后
到此這篇關(guān)于pytest中fixture的使用詳解的文章就介紹到這了,更多相關(guān)pytest中的fixture內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
解決windows下Sublime Text 2 運行 PyQt 不顯示的方法分享
問題描述:PyQt 環(huán)境正常,可以使用 Windows 的 虛擬 DOS 正常運行,但在 Sublime Text 2 下使用 Ctrl + B 運行后,界面不顯示,但查看任務(wù)管理器,有 python.exe 進程。2014-06-06
Python使用Crypto庫實現(xiàn)加密解密的示例詳解
這篇文章主要為大家詳細介紹了Python如何使用Crypto庫實現(xiàn)加密解密的功能,文中的示例代碼講解詳細,對我們學習Python有一定的幫助,需要的可以參考一下2023-01-01
python使用Celery構(gòu)建異步任務(wù)隊列提高服務(wù)器吞吐量及響應速度
這篇文章主要介紹了python使用Celery構(gòu)建異步任務(wù)隊列提高服務(wù)器吞吐量及響應速度實例探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2024-01-01
Python通過Tesseract庫實現(xiàn)文字識別
這篇文章主要介紹了Python通過Tesseract庫實現(xiàn)文字識別,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-03-03
Python實現(xiàn)針對給定字符串尋找最長非重復子串的方法
這篇文章主要介紹了Python實現(xiàn)針對給定字符串尋找最長非重復子串的方法,涉及Python針對字符串的遍歷、排序、計算等相關(guān)操作技巧,需要的朋友可以參考下2018-04-04
關(guān)于Python中幾個有趣的函數(shù)和推導式解析
這篇文章主要介紹了關(guān)于Python中幾個有趣的函數(shù)和推導式解析,推導式comprehensions,又稱解析式,是Python的一種獨有特性,推導式是可以從一個數(shù)據(jù)序列構(gòu)建另一個新的數(shù)據(jù)序列的結(jié)構(gòu)體,需要的朋友可以參考下2023-08-08

