分享Pytest fixture参数传递的几种方式
作者:aduocd
这篇文章主要分享的是Pytest fixture参数传递的几种方式,文章基于python的相关资料展开对主题的详细介绍,具有一定的参考价值,需要的小伙伴可以参考一下
1.背景
最近使用Pytest
中的fixture
和conftest
时,遇到需要在conftest中的setup和teardown方法里传递参数。这里记录下几种实现的方式。
2.fixture中参数传递的几种方式
1)fixture中的函数返回
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)
结果:
执行一条用例,输出:[{"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
结果:
执行两条用例,分别输出:{"k1": "v1"}, {"k2": "v2"}
注:
当 indirect=False 时,“setup_func”被当成普通变量;
当 indirect=True 时,“setup_func”被当成函数执行,且 “test_data”作为函数中的参数传递
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)
结果:
执行一条用例,输出:([{'k1': 'v1'}, {'k2': 'v2'}], [{'k11': 'v11'}, {'k22': 'v22'}])
4)测试方法中产生数据后,直接调用teardown
@python.fixture(scope="class") def teardown_func(): def _teardown_func(param1, param2): func() return _teardown_func
到此这篇关于分享Pytest fixture参数传递的几种方式的文章就介绍到这了,更多相关Pytest参数传递内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!