Pytest學習7 引數化

2022-08-24 22:57:08 字數 1735 閱讀 8230

在測試過程中,引數化是必不可少的功能,本文就討論下pytest的幾種引數化方法

1.內建的pytest.mark.parametrize裝飾器支援測試函式的引數化基本用法

例如:@pytest.mark.parametrize("input,expect",[("3+5",8),("5+5",9),("4+9",12),("10+21",31)])

def test_param(input,expect):

assert eval(input)==expect

結果:成功2個失敗2個.

2.它也可以標記單個測試例項在引數化,例如使用內建的mark.xfail

@pytest.mark.parametrize("input,expect",[("3+5",8),("5+5",9),("4+9",12),pytest.param("10+21",31,marks=pytest.mark.xfail)])

def test_param(input,expect):

assert eval(input)==expect

3.引數組合測試:

@pytest.mark.parametrize("x",[1,2,3,4])

@pytest.mark.parametrize("y",[3,4])

def test_param(x,y):

print("引數組合%s,******,%s"%(x,y))

結果會測試8次組合結果,如圖:

@pytest.fixture(params=[1,2,3,4,'abd']) ---可以是列表、也可以是元祖

def user(request): --- request是固定寫法

return request.param --request也是固定寫法

def test_login(user):

print("user:%s"%user)

輸出結果:

列表內包含字典資料格式引數化

例如有個登入視窗,分別驗證使用者名稱、密碼正確,使用者名稱、密碼正確,使用者名為空、密碼為空等情況,並有個預期結果驗證。

引數組成:

users =[,,

]**示例:

@pytest.fixture(params=users)

def user(request):

return request.param

def test_login(user):

username=user["username"]

password=user["password"]

if username=="test" and password=='test':

assert "login success" == user["expect"]

else:

pytest.xfail(reason="fail")

輸出結果:

Pytest框架引數化

本文主要介紹第二種引數化方式 pytest.mark.parametrize 引數名稱 lists or tuple or set 傳入單個引數。引數名稱僅作為引數名稱,便於記憶,可隨意起。引數不管是lists或是tuple型別都可以執行成功,另外集合型別set 順便試了一下也是成功的不過沒有特殊研...

pytest 之 fixture引數化

pytest 之 fixture引數化 前面通過unittest框架介紹了ui自動化po模式,basepage封裝後,unittest框架搭建的ui自動化框架,基本就成型了。前面的幾篇pytest文章,也簡要介紹了pytest和unittest框架的相同與不同之處。將unittest框架替換為pyt...

pytest 引數化昇華版

裝飾類,則類中所有的測試用例都是用這組引數 裝飾測試函式,只有被裝飾的函式使用這組引數 import pytest test datas 11,22,33 22,33,55 datas dict 方式一 直接寫 pytest.mark.parametrize a,b,c 1,2,3 4,5,9 de...