分享Pytest fixture参数传递的几种方式

 更新时间:2022年04月27日 09:41:05   作者:aduocd  
这篇文章主要分享的是Pytest fixture参数传递的几种方式,文章基于python的相关资料展开对主题的详细介绍,具有一定的参考价值,需要的小伙伴可以参考一下

1.背景

最近使用Pytest中的fixtureconftest时,遇到需要在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参数传递内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 使用Python脚本将Bing的每日图片作为桌面的教程

    使用Python脚本将Bing的每日图片作为桌面的教程

    这篇文章主要介绍了使用Python脚本将Bing的每日图片作为桌面的教程,示例基于Windows操作系统环境实现,需要的朋友可以参考下
    2015-05-05
  • Python进阶之import导入机制原理详解

    Python进阶之import导入机制原理详解

    在Python中,一个.py文件代表一个Module。在Module中可以是任何的符合Python文件格式的Python脚本。了解Module导入机制大有用处。快跟随小编一起学习一下吧
    2022-11-11
  • Python实现提取音乐频谱的方法详解

    Python实现提取音乐频谱的方法详解

    你有没有经常好奇一些音乐软件的频谱特效是怎么做的,为什么做的这么好看?有没有想试试自己提取音乐频谱并可视化展现出来?本文就来教你如何利用Python提取音乐频谱,快来学习一下吧
    2022-06-06
  • Python3.5基础之变量、数据结构、条件和循环语句、break与continue语句实例详解

    Python3.5基础之变量、数据结构、条件和循环语句、break与continue语句实例详解

    这篇文章主要介绍了Python3.5基础之变量、数据结构、条件和循环语句、break与continue语句,结合实例形式详细分析Python3.5编程入门相关的变量、数据结构、常用条件与循环语句操作技巧及注意事项,需要的朋友可以参考下
    2019-04-04
  • 关于Python Error标准异常的总结

    关于Python Error标准异常的总结

    这篇文章主要介绍了关于Python Error标准异常的总结,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • centos6.4下python3.6.1安装教程

    centos6.4下python3.6.1安装教程

    这篇文章主要为大家详细介绍了centos6.4下python3.6.1的安装教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • Python图像处理之图像清晰度评价

    Python图像处理之图像清晰度评价

    图像清晰度评价,顾名思义就是能够通过一张标准图,对同一组相机拍摄的照片进行清晰度评价。本文将利用Python实现这一效果,需要的可以参考一下
    2022-12-12
  • python中可以发生异常自动重试库retrying

    python中可以发生异常自动重试库retrying

    这篇文章主要介绍了python中可以发生异常自动重试库retrying,retrying是一个极简的使用Python编写的库,主题更多相关内容需要的朋友可以参考一下
    2022-06-06
  • qpython3 读取安卓lastpass Cookies

    qpython3 读取安卓lastpass Cookies

    这篇文章主要介绍了qpython3 读取安卓lastpass Cookies的相关资料,需要的朋友可以参考下
    2016-06-06
  • 一文详解Python定时任务触发

    一文详解Python定时任务触发

    这篇文章主要为大家详细介绍了Python定时任务触发的相关知识,文中的示例代码讲解详细,对我们学习Python有一定的帮助,需要的可以参考一下
    2023-04-04

最新评论