您好,登錄后才能下訂單哦!
這篇文章主要介紹了Python中Pytest裝飾器@pytest.mark.parametrize有什么用,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
Pytest中裝飾器@pytest.mark.parametrize('參數(shù)名',list)可以實現(xiàn)測試用例參數(shù)化,類似DDT
如:@pytest.mark.parametrize('請求方式,接口地址,傳參,預(yù)期結(jié)果',[('get','www.baidu.com','{"page":1}','{"code":0,"msg":"成功"})',('post','www.baidu.com','{"page":2}','{"code":0,"msg":"成功"}')])
1、第一個參數(shù)是字符串,多個參數(shù)中間用逗號隔開
2、第二個參數(shù)是list,多組數(shù)據(jù)用元祖類型;傳三個或更多參數(shù)也是這樣傳。list的每個元素都是一個元組,元組里的每個元素和按參數(shù)順序一一對應(yīng)
3、傳一個參數(shù) @pytest.mark.parametrize('參數(shù)名',list) 進(jìn)行參數(shù)化
4、傳兩個參數(shù)@pytest.mark.parametrize('參數(shù)名1,參數(shù)名2',[(參數(shù)1_data[0], 參數(shù)2_data[0]),(參數(shù)1_data[1], 參數(shù)2_data[1])]) 進(jìn)行參數(shù)化
import pytest #單參數(shù)單值 @pytest.mark.parametrize("user",["18221124104"]) def test(user): print(user) assert user=="18221124104" "C:\Program Files\Python35\python.exe" C:/Users/wangli/PycharmProjects/Test/test/test03.py ============================= test session starts ============================= platform win32 -- Python 3.5.2, pytest-5.1.2, py-1.8.0, pluggy-0.12.0 rootdir: C:\Users\wangli\PycharmProjects\Test\test collected 1 item test03.py 18221124104 . ============================== 1 passed in 0.15s ============================== Process finished with exit code 0 #單參數(shù)多值 @pytest.mark.parametrize("user",["18221124104","18200000000","18200000001"]) def test(user): print(user) assert user=="18221124104" "C:\Program Files\Python35\python.exe" C:/Users/wangli/PycharmProjects/Test/test/test03.py ============================= test session starts ============================= platform win32 -- Python 3.5.2, pytest-5.1.2, py-1.8.0, pluggy-0.12.0 rootdir: C:\Users\wangli\PycharmProjects\Test\test collected 3 items test03.py 18221124104 .18200000000 F18200000001 F ================================== FAILURES =================================== ______________________________ test[18200000000] ______________________________ user = '18200000000' @pytest.mark.parametrize("user",["18221124104","18200000000","18200000001"]) def test(user): print(user) > assert user=="18221124104" E AssertionError test03.py:74: AssertionError ______________________________ test[18200000001] ______________________________ user = '18200000001' @pytest.mark.parametrize("user",["18221124104","18200000000","18200000001"]) def test(user): print(user) > assert user=="18221124104" E AssertionError test03.py:74: AssertionError ========================= 2 failed, 1 passed in 0.21s ========================= Process finished with exit code 0 #多參數(shù)多值 @pytest.mark.parametrize("user,pwd",[("18221124104",111111),("18200000000",111111)]) def test(user,pwd): print(user,pwd) "C:\Program Files\Python35\python.exe" C:/Users/wangli/PycharmProjects/Test/test/test03.py ============================= test session starts ============================= platform win32 -- Python 3.5.2, pytest-5.1.2, py-1.8.0, pluggy-0.12.0 rootdir: C:\Users\wangli\PycharmProjects\Test\test collected 2 items test03.py 18221124104 111111 .18200000000 111111 . ============================== 2 passed in 0.03s ============================== Process finished with exit code 0 # 使用內(nèi)置的mark.xfail標(biāo)記為失敗的用例就不運(yùn)行了,直接跳過顯示xfailed @pytest.mark.parametrize("user,pwd",[("18221124104",111111),pytest.param("18200000000",111111,marks=pytest.mark.xfail)]) def test(user,pwd): print(user,pwd) assert user == "18221124104" assert pwd== 111111 "C:\Program Files\Python35\python.exe" C:/Users/wangli/PycharmProjects/Test/test/test03.py ============================= test session starts ============================= platform win32 -- Python 3.5.2, pytest-5.1.2, py-1.8.0, pluggy-0.12.0 rootdir: C:\Users\wangli\PycharmProjects\Test\test collected 2 items test03.py 18221124104 111111 .18200000000 111111 x ======================== 1 passed, 1 xfailed in 0.14s ========================= Process finished with exit code 0 #若要獲得多個參數(shù)化參數(shù)的所有組合,可以堆疊參數(shù)化裝飾器 @pytest.mark.parametrize("x", [0, 1]) @pytest.mark.parametrize("y", [2, 3]) def test_foo(x, y): print("測試數(shù)據(jù)組合:x->%s, y->%s" % (x, y)) if __name__=="__main__": pytest.main(["-s","test03.py"]) "C:\Program Files\Python35\python.exe" C:/Users/wangli/PycharmProjects/Test/test/test03.py ============================= test session starts ============================= platform win32 -- Python 3.5.2, pytest-5.1.2, py-1.8.0, pluggy-0.12.0 rootdir: C:\Users\wangli\PycharmProjects\Test\test collected 4 items test03.py 測試數(shù)據(jù)組合:x->0, y->2 .測試數(shù)據(jù)組合:x->1, y->2 .測試數(shù)據(jù)組合:x->0, y->3 .測試數(shù)據(jù)組合:x->1, y->3 . ============================== 4 passed in 0.03s ============================== Process finished with exit code 0
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“Python中Pytest裝飾器@pytest.mark.parametrize有什么用”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。