分享Pytest fixture參數(shù)傳遞的幾種方式
1.背景
最近使用Pytest
中的fixture
和conftest
時,遇到需要在conftest中的setup和teardown方法里傳遞參數(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)
結果:
執(zhí)行一條用例,輸出:[{"k1": "v1"}, {"k2": "v2"}]
2)與@pytest.mark.parametrize的結合
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
結果:
執(zhí)行兩條用例,分別輸出:{"k1": "v1"}, {"k2": "v2"}
注:
當 indirect=False 時,“setup_func”被當成普通變量;
當 indirect=True 時,“setup_func”被當成函數(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)
結果:
執(zhí)行一條用例,輸出:([{'k1': 'v1'}, {'k2': 'v2'}], [{'k11': 'v11'}, {'k22': 'v22'}])
4)測試方法中產(chǎn)生數(shù)據(jù)后,直接調用teardown
@python.fixture(scope="class") def teardown_func(): ? ? def _teardown_func(param1, param2): ? ? ? ? func() ? ? return _teardown_func
到此這篇關于分享Pytest fixture參數(shù)傳遞的幾種方式的文章就介紹到這了,更多相關Pytest參數(shù)傳遞內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Python實現(xiàn)的查詢mysql數(shù)據(jù)庫并通過郵件發(fā)送信息功能
這篇文章主要介紹了Python實現(xiàn)的查詢mysql數(shù)據(jù)庫并通過郵件發(fā)送信息功能,可實現(xiàn)Python針對mysql的查詢與宕機信息通過郵件發(fā)送的相關操作技巧,需要的朋友可以參考下2018-05-05Django之使用celery和NGINX生成靜態(tài)頁面實現(xiàn)性能優(yōu)化
這篇文章主要介紹了Django之使用celery和NGINX生成靜態(tài)頁面實現(xiàn)性能優(yōu)化,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-10-10