日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無先后,達(dá)者為師

網(wǎng)站首頁 編程語言 正文

分享Pytest?fixture參數(shù)傳遞的幾種方式_python

作者:aduocd ? 更新時(shí)間: 2022-06-25 編程語言

1.背景

最近使用Pytest中的fixtureconftest時(shí),遇到需要在conftest中的setup和teardown方法里傳遞參數(shù)。這里記錄下幾種實(shí)現(xiàn)的方式。

2.fixture中參數(shù)傳遞的幾種方式

1)fixture中的函數(shù)返回

conftest.py
@pytest.fixture(scope="class")
def setup_func():
? ? test_data = [{"k1": "v1"}, {"k2": "v2"}]
? ? return test_data
testcase.py
def test_func(setup_func)
? ? print(setup_func)

結(jié)果:

執(zhí)行一條用例,輸出:[{"k1": "v1"}, {"k2": "v2"}]

2)與@pytest.mark.parametrize的結(jié)合

conftest.py
@pytest.fixture(scope="class")
def setup_func(request):
? ? print(request.param)
? ? return request.param
testcase.py
test_data = [{"k1": "v1"}, {"k2": "v2"}]
@pytest.mark.parametrize('setup_func', test_data, indirect=True)
def test_func(setup_func)
? ? setup_func

結(jié)果:

執(zhí)行兩條用例,分別輸出:{"k1": "v1"}, {"k2": "v2"}

注:

當(dāng) indirect=False 時(shí),“setup_func”被當(dāng)成普通變量;?
當(dāng) indirect=True 時(shí),“setup_func”被當(dāng)成函數(shù)執(zhí)行,且 “test_data”作為函數(shù)中的參數(shù)傳遞

3)fixture中的方法嵌套傳遞

confitest.py
@pytest.fixture(scope="class")
def setup_func1():
? ? test_data1 = [{"k1": "v1"}, {"k2": "v2"}]
? ? return test_data1

@pytest.fixture(scope="class")
def setup_func2(setup_func1):
? ? a = setup_func1
? ? b = [{"k11": "v11"}, {"k22": "v22"}]
? ? return (a, b)
testcase.py
def test_aaa(self, setup_func2):
? ? ? ? print(setup_func2)

結(jié)果:

執(zhí)行一條用例,輸出:([{'k1': 'v1'}, {'k2': 'v2'}], [{'k11': 'v11'}, {'k22': 'v22'}])

4)測(cè)試方法中產(chǎn)生數(shù)據(jù)后,直接調(diào)用teardown

@python.fixture(scope="class")
def teardown_func():
? ? def _teardown_func(param1, param2):
? ? ? ? func()
? ? return _teardown_func

原文鏈接:https://blog.csdn.net/aduocd/article/details/124106135

欄目分類
最近更新