python+pytest單元測試框架之fixture標識

前言

fixture是pytest特有的功能,它用pytest.fixture標識,定義在函數(shù)前面。在你編寫測試函數(shù)的時候,你可以將此函數(shù)名稱做為傳入?yún)?shù),pytest將會以依賴注入方式,將該函數(shù)的返回值作為測試函數(shù)的傳入?yún)?shù)。 fixture有明確的名字,在其他函數(shù),模塊,類或整個工程調(diào)用它時會被激活。 fixture是基于模塊來執(zhí)行的,每個fixture的名字就可以觸發(fā)一個fixture的函數(shù),它自身也可以調(diào)用其他的fixture。 我們可以把fixture看做是資源,在你的測試用例執(zhí)行之前需要去配置這些資源,執(zhí)行完后需要去釋放資源。比如module類型的fixture,適合于那些許多測試用例都只需要執(zhí)行一次的操作。 fixture還提供了參數(shù)化功能,根據(jù)配置和不同組件來選擇不同的參數(shù)。 fixture主要的目的是為了提供一種可靠和可重復(fù)性的手段去運行那些最基本的測試內(nèi)容。比如在測試網(wǎng)站的功能時,每個測試用例都要登錄和退出,利用fixture就可以只做一次,否則每個測試用例都要做這兩步也是冗余。

一、fixture基礎(chǔ)示例

1、在函數(shù)聲明之前加上“@pytest.fixture”。其他函數(shù)要來調(diào)用這個Fixture,只用把它當做一個輸入的參數(shù)即可

代碼示例

運行結(jié)果:test_1和test_2運行之前都調(diào)用了before,也就是before執(zhí)行了兩次。默認情況下,fixture是每個測試用例如果調(diào)用了該fixture就會執(zhí)行一次的。

運行結(jié)果

二、調(diào)用fixture的三種方式

第一種是每個函數(shù)前聲明,第二種是封裝在類里,類里的每個成員函數(shù)聲明,第三種是封裝在類里在前聲明。在可以看到3中不同方式的運行結(jié)果都是一樣。

1、第一種調(diào)用方式如上面所述

2、用fixture decorator調(diào)用fixture

decorator調(diào)用fixture

3、用autos調(diào)用fixture

fixture decorator一個optional的參數(shù)是autouse, 默認設(shè)置為False。 當默認為False,就可以選擇用上面兩種方式來試用fixture。 當設(shè)置為True時,在一個session內(nèi)的所有的test都會自動調(diào)用這個fixture。 權(quán)限大,責任也大,所以用該功能時也要謹慎小心。

autos調(diào)用fixture

三、fixture 返回值

fixture返回值都是默認None,我們可以選擇讓fixture返回我們需要的東西。如果你的fixture需要配置一些數(shù)據(jù),讀個文件,或者連接一個數(shù)據(jù)庫,那么你可以讓fixture返回這些數(shù)據(jù)或資源。如何帶參數(shù) fixture還可以帶參數(shù),可以把參數(shù)賦值給params,默認是None。對于param里面的每個值,fixture都會去調(diào)用執(zhí)行一次,就像執(zhí)行for循環(huán)一樣把params里的值遍歷一次。?

fixture 返回值
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容