# 直接跳過
@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...