欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

首頁綜合 正文
目錄

柚子快報邀請碼778899分享:pytest常用參數(shù)化方法詳解

柚子快報邀請碼778899分享:pytest常用參數(shù)化方法詳解

http://yzkb.51969.com/

????????最近在學習python的pytest自動化框架,對于pytest的參數(shù)化相關(guān)信息進行一個記錄,信息可能不全,有問題可以私信指正。

pytest運行參數(shù):

-s :?

其作?是可以讓打印的內(nèi)容輸出顯示在終端中,或者可以在終端中與?例中的輸?操作進?交互

-v:

表示詳細輸出更詳細的輸出,包括每個測試?例的詳細結(jié)果和其他相關(guān)信息,例如測試?例所在的模塊、?件路徑等。

以上兩個參數(shù)可以一起使用: -sv

-q :

簡化輸出,正與-v參數(shù)相反

--lf(last fail):

可以把上次執(zhí)行失敗的用例重新執(zhí)行,跳過上一次執(zhí)行成功的測試用例

-m 標簽名:

執(zhí)行特定的測試用例,可以使用參數(shù)-m加上標簽名

注意:使用@pytest.mark參數(shù),需要在根目錄下建立一個pytest.ini文件并且寫入markers選項,否則會產(chǎn)生war

首先,使用@pytest.mark.標簽名

在pytest.ini中添加markers,將標簽名添加

執(zhí)行時,添加 -m 標簽名

–-ff參數(shù):

把上次執(zhí)行失敗的用例執(zhí)行完后,再繼續(xù)執(zhí)行剩下成功的用例

自定義參數(shù):目前還沒有運用過,后續(xù)會更新

參數(shù)化函數(shù)

pytest.fixture:

定義:

1. 定義fixture跟定義普通函數(shù)差不多,唯一區(qū)別就是在函數(shù)上加個裝飾器@pytest.fixture(),fixture命名不要用test_開頭,跟用例區(qū)分開。用例才是test_開頭的命名; 2. fixture裝飾器里的scope有四個級別的參數(shù):function(不寫默認這個)、class、module、session; 3. fixture可以有返回值,如果沒有return,默認會是None;用例調(diào)用fixture的返回值,就是直接把4. fixture的函數(shù)名稱作為參數(shù)傳入; 5. fixture可以返回一個元組、列表或字典; 6. 測試用例可傳單個、多個fixture參數(shù); 7. fixture與fixture間可相互調(diào)用;

格式如下:

@pytest.fixture(scope="", params="", autouse=False, ids="", name="")

scope:表示被@pytest.fixture標記的方法作用域,它的值主要有4個:

????????function:默認,范funtion:作用域是方法,就是在每個測試用例執(zhí)行之前都會先去執(zhí)行前置操作,類似setup/teardown

????????class:作用域是每一個類,就是在每個類執(zhí)行之前會執(zhí)行前置操作(注意:測試類中只要有一個測試用例的參數(shù)中使用了class級別的fixture,則在整個測試類的所有測試用例都會調(diào)用fixture函數(shù))

????????module:作用域是模塊,也就是類,一個文件有多個類的時候,每次都只會執(zhí)行一次前置和后置操作

????????package/session:多個測試用例文件只執(zhí)行一次前后置操作

params:參數(shù)化(支持的格式有:list、tuple、字典)

autouse:自動使用,默認False,autouse設(shè)置為True,自動調(diào)用fixture功能。所有用例都會生效,包括類中的測試用例和類以外的測試用例

ids:當使用params參數(shù)化時,給每一個值設(shè)置一個變量,意義不大

name:給被fixture標記的方法修改別名

方法一:作為參數(shù)

fixture的名字直接作為測試用例的參數(shù),用例調(diào)用fixture的返回值,直接將fixture的函數(shù)名稱當做變量名稱;如果用例需要用到多個fixture的返回數(shù)據(jù),fixture也可以返回一個元祖,list或字典,然后從里面取出對應數(shù)據(jù),使用方式如下:

將fixture函數(shù)作為參數(shù)傳遞:

在同一個測試用例中傳入多個fixture:

方法二:conftest.py+@pytest.fixtrue實現(xiàn)全局前后置應用

在conftest.py文件中配置,實現(xiàn)在測試用例執(zhí)行前后實現(xiàn)某些特定操作,實例如下:

可實現(xiàn)在測試用例執(zhí)行前清空日志文件信息和信息打印

注意:

conftest.py文件須知: conftest.py與運行的用例要在同一個pakage下,并且有__init__.py文件; 不需要import導入conftest.py,pytest用例會自動識別該文件,放到項目的根目錄下就可以全局目錄調(diào)用了,如果放到某個package下,那就在package內(nèi)有效,可有多個conftest.py; conftest.py配置腳本名稱是固定的,不能改名稱; 所有同目錄測試文件運行前都會執(zhí)行conftest.py文件

方法三:與pytest.mark.usefixtures組合使用,實現(xiàn)fixture疊加調(diào)用

注意:直接傳入fixture不同的是,pytest.mark.usefixtures無法獲取到被fixture裝飾的函數(shù)的返回值;使用場景為測試用例需要多個fixture做前后置工作時使用

mark標記

特點:

裝飾器@pytest.mark.markname可以標記測試函數(shù),測試類。 一個mark可以標記多個測試函數(shù),一個測試函數(shù)可以使用多個mark;有多個mark標記的時候,最接近測試函數(shù)的標記將首先迭代。 運行沒有注冊的標記,會出現(xiàn)warning警告,要先注冊標記,再使用標記(方式:在pytest.ini文件注冊自定義標記)。 當使用--strict-markers命令行參數(shù)的時候,運行未在pytest.ini文件中注冊的任何標記都將引發(fā)異常。 pytest --markers 可以查看所有的mark標簽,包括內(nèi)置標記和自定義標記。

pytest.mark.parametrize

定義:實現(xiàn)測試用例參數(shù)化,類似DDT

格式:@pytest.mark.parametrize(argnames,?argvalues,?indirect=False,?ids=None,?scope=None,?*,?_param_mark=None)

argnames:參數(shù)名,以逗號分隔的字符串,表示一個或多個參數(shù)名稱。或參數(shù)字符串組成的列表/元組。 ? ? ? ? 如果是一個參數(shù),使用參數(shù)名的字符串。

? ? ? ? 如果是多個參數(shù),多個參數(shù)名之間使用逗號分隔的字符串,或者多個參數(shù)名組成的列表,或者多個參數(shù)名組成的元組。

argvalues:參數(shù)值,類型是一個可迭代對象,和參數(shù)名一一對應。 ? ? ? ? 如果argnames為一個參數(shù),則argvalues是一個值列表。

? ? ? ? 如果argnames為多個參數(shù),則argvalues必須是一個嵌套元組的列表,其中每個元組元素值與參數(shù)名一一對應。

indirect:參數(shù)名稱列表(參數(shù)名稱的子集)或布爾值。 ? ? ? ? indirect一般與Pytest的fixture,request.param組合使用

? ? ? ? 當indrect =True時,argnames參數(shù)名是fixture夾具的函數(shù)名,argvalues則是給這個夾具函數(shù)傳遞的參數(shù)。

ids:標記參數(shù)化測試用例的執(zhí)行名稱,默認自動生成,多個參數(shù)名之間用"-"連接。scope:參數(shù)范圍。 ?

實例:

傳一個參數(shù) @pytest.mark.parametrize('參數(shù)名',list) 進行參數(shù)化 傳兩個參數(shù)@pytest.mark.parametrize('參數(shù)名1,參數(shù)名2',[(參數(shù)1_data[0], 參數(shù)2_data[0]),(參數(shù)1_data[1], 參數(shù)2_data[1])]) 進行參數(shù)化

方法:

單個參數(shù):輸入值可以填寫多個,逗號區(qū)分

多個參數(shù):輸入值以列表形式賦值

參數(shù)組合使用,效果類似笛卡爾積:

參數(shù)化集合標記:

使用pytest.param進行標記:例如跳過某條測試用例的執(zhí)行:pytest.param("Alex", "123456", marks=pytest.mark.skip或者對測試用例進行標簽

調(diào)用外部函數(shù):

結(jié)合marks ,為特定參數(shù)組合添加額外的標記。

@pytest.mark.parametrize("x, y", [

(1, 2, pytest.mark.smoke),添加標記

(3, 4),

], indirect=True)

def test_marks(x, y):

assert x + y in [3, 7]

pytest.mark.skip

定義:無條件跳過測試用例

語法:pytest.mark.skip(reason=None) ;reason:str類型,默認值為None,可以添加跳過測試用例原因的描述信息

pytest.mark.skipif

定義:如果條件為真,則跳過測試用例

語法:pytest.mark.skipif(condition,?*,?reason=None);

condition,條件,可以為True,False或者條件字符串;條件為真,則標記起作用;條件為假,則標記不起作用;使用condition參數(shù)的時候,必須有參數(shù)reason,否則會報錯ERROR;

reason:str類型,默認值為None,可以添加跳過測試用例原因的描述信息。

pytest.mark.xfail

定義:將測試用例標記為預期失敗

語法:

pytest.mark.xfail(condition=None,?*,?reason=None,?raises=None,?run=True,?strict=False)

condition,條件,默認值為None,可以為True,False或者條件字符串;條件為真,則標記起作用。條件為假,則標記不起作用;使用參數(shù)condition的時候,必須有參數(shù)reason,否則會報錯ERROR。

reason,str類型,默認值為None,可以添加預期失敗原因的描述信息。 raises,異常類型,默認值為None,可以是單個異常,也可以是多個異常組成的元組;如果測試用例執(zhí)行失敗,出現(xiàn)的異常類型在raises里,則不會拋出異常,測試用例標記為XFAIL;如果測試用例執(zhí)行失敗,出現(xiàn)raises之外的異常,則測試用例標記為FAILED,并拋出異常信息。 run,布爾型,默認值為True;當run=False時候,直接將測試用例標記為XFAIL,不需要執(zhí)行測試用例。 strict,默認值為False;當strict=False時,如果用例執(zhí)行失敗,結(jié)果標記為XFAIL,表示符合預期的失敗;如果用例執(zhí)行成功,結(jié)果標記為XPASS,表示不符合預期的成功;當strict=True時,如果用例執(zhí)行成功,結(jié)果將標記為FAILED,而不再是XPASS了;可以在pytest.ini文件中配置:xfail_strict=true ?

預期:

XFAIL,預期失敗的測試用例,實際結(jié)果執(zhí)行失敗,預期結(jié)果和實際結(jié)果一致。XPASS,預期失敗的測試用例,實際結(jié)果執(zhí)行成功,預期結(jié)果和實際結(jié)果不一致。pytest.xfail 方法在用例執(zhí)行過程中直接標記用例結(jié)果為XFAIL,不會執(zhí)行后面的代碼。

pytest.mark.filterwarnings

?添加警告過濾器

語法:

pytest.mark.filterwarnings(filter)

filter,str類型,一個由Python文檔的警告過濾器部分中指定的元組內(nèi)容(action, message, category, module, lineno)組成的警告規(guī)范字符串,用“:”分隔??蛇x字段可以省略。

eg:

import warnings import pytest

def api_v1(): ? ? warnings.warn(UserWarning("api v1, should use functions from v2")) ? ? return 1

@pytest.mark.filterwarnings("ignore:api v1") def test_one(): ? ? assert api_v1() == 1

pytest.marl.tryfirst/trylast

tryfirst:

mark a hook implementation function such that the plugin machinery will try to call it first/as early as possible

標記一個hook實現(xiàn)函數(shù),以便插件機制將嘗試首先/盡早調(diào)用它

trylast:

標記一個hook實現(xiàn)函數(shù),以便插件機制將嘗試最后/盡晚調(diào)用它

柚子快報邀請碼778899分享:pytest常用參數(shù)化方法詳解

http://yzkb.51969.com/

推薦閱讀

評論可見,查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。

轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://gantiao.com.cn/post/19206433.html

發(fā)布評論

您暫未設(shè)置收款碼

請在主題配置——文章設(shè)置里上傳

掃描二維碼手機訪問

文章目錄