pytest框架中 裝飾器的用法

2021-10-20 08:19:15 字數 3234 閱讀 8212

#  直接跳過

@pytest.mark.skip(reason=

"the test case)

def test_one():

print(「test_one」)

# 條件跳過 condition 為跳過條件,例:1==1 跳過 1!=1時執行

@pytest.mark.skipif(condition="1==1", reason='the test case')

def test_7():

print("test_7")

if __name__ == "__main__":

pytest.main(["-s", "test.py"]

)

1、傳乙個引數時

@pytest.mark.parametrize(

"a", [1]

)def test_2(a):

if a < 2:

print(a)

# 值多時,會迴圈執行所有

@pytest.mark.parametrize(

"a", [1, 2, 3]

)def test_2(a):

if a < 2:

print(a)

2、多個引數時

@pytest.mark.parametrize(

"a, b, c", [

[1, 2, 3], [4, 5,6], [7, 8, 9]])

def test_2(a, b, c):

if a < b:

print(

'\n-----------------'

) print(a, b)

elif a < c:

print(a + c)

elif a+b < c:

print(c)

if __name__ ==

"__main__"

: pytest.main(

["-s", "test_new.py"

])

value =

[[1, 2, 3], [4, 5,6], [7, 8, 9]

]@pytest.mark.parametrize(

"a, b, c", value)

def test_2(a, b, c):

if a < b:

print(

'\n-----------------'

) print(a, b)

elif a < c:

print(a + c)

elif a+b < c:

print(c)

if __name__ ==

"__main__"

: pytest.main(

["-s", "test_new.py"

])

#  condition 條件相等判斷失敗

@pytest.mark.xfail(condition=

'1==1', reason=

"the test case"

)def test_1(

): print(

"\n-------"

)# condition 條件不等判斷成功

@pytest.mark.xfail(condition=

'1==2', reason=

"the test case"

)def test_2(

): print(

"\n-------"

)

@pytest.fixture(

)def test1(

): a =

'測試資料的繼承1'

return a

def test2(test1, test3):

print(test1, test3)

@pytest.fixture(

)def test3(

): return

"測試資料的繼承2"

if __name__ ==

"__main__"

: pytest.main(

["-s", "test_new.py"

])

安裝外掛程式: pytest-ordering

# 全是正數的話,越小越先執行,比如order=3, 2, 1的話,order為1的先執行

# 都是負數的話,值越小越先執行

# 0和負數的話,0先執行,剩下的數值越小越先執行;0和正數的話,0先執行,剩下的數越小越先執行

# 0 正數 負數,0先執行,正數再執行,負數最後

# 順序:0 ---> 較小的正數 ---> 較大的正數 ---> 較小的負數 ---> 較大的負數

@pytest.mark.run(order=3)

def test1(

): print(

'\n測試資料3'

)@pytest.mark.run(order=2)

def test2(

): print(

'\n測試資料2'

)@pytest.mark.run(order=4)

def test3(

): print(

'\n測試資料4'

)if __name__ ==

"__main__"

: pytest.main(

["-s", "test_new.py"

])

安裝外掛程式:pytest-rerunfailures

#  reruns 設定失敗後反覆執行的次數

# reruns_delay 設定每次執行間隔的時間

# 執行成功,反覆停止

@pytest.mark.flaky(reruns=5, reruns_delay=1)

def test3(

): print(

"\n執行"

) assert 1 == 2

if __name__ ==

"__main__"

: pytest.main(

["-s", "test_new.py"

])

Python中裝飾器的用法

定義 裝飾器本身就是乙個函式 為其他函式提供附加功能 不改變源 不改變原呼叫方式 裝飾器 高階函式 巢狀函式 知識點 函式本身就是乙個變數 意味著可以被複製給乙個變數 test test 1 高階函式把函式名當成乙個實參傳遞給另乙個函式func test1 不改變源 的前提下新增 返回值中包含函式名...

Python中裝飾器的用法

裝飾器的作用 當我們需要為函式拓展新的功能,但是又不能修改函式的內部結構時,就可以通過裝飾器來完成。通過裝飾器為函式拓展功能符合 對於擴充套件是開放的,對於修改是封閉的 這一開閉原則。下面我們將通過六個步驟了解如何使用裝飾器。步驟一 我們先定義乙個函式f,現在我們需要為其新增執行時列印出當前時間的功...

python中裝飾器的原理及用法

要想理解python中裝飾器的原理首先要明白一下兩點 2 裝飾器的的作用等價於callfucn decfucn callfucn 這兩點在後期的分析中要牢牢的記住。以一段 為例 def decofun func def deco a,b print before callfunc called.fu...