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