• pytes中fixture的scope: 决定可以在什么范围内共享fixture


    1fixture的scope

    在@pytest.fixture(scope='xxx')中,scope的可选值有5个,以下是官网的描述
    image

    2 function级别的scope

    添加如下代码到pytest.ini,便于输出日志
    image
    新建conftest.py文件,把fixture函数写入其中,便于后面fixture可以在多个py文件中的test函数中引用
    conftest.py
    image
    pytest的fixture默认级别就是 funtion,因此可以不写scope参数
    test_fixture.py
    image

    执行结果
    image

    注意,两个test函数中,list对象的id是不同的,虽然他们的内容都是相同的,这说明在这两个test函数中,他们各自独立地执行了一次fixture,拿到了各自的list对象

    the default scope, the fixture is destroyed at the end of the test

    3 class级别的scope

    image

    image

    执行
    image
    注意,每个class里面都有2个test函数,同一个class里面的test函数,输出的list对象是相同的,
    说明他们拿到的都是同一个list对象,生产list对象的fixture只执行了一次
    不同的class的test函数,输出的list对象的id是不同的,说明在执行第2个class时,fixture又执行了一次,生成一个新的list对象


    class: the fixture is destroyed during teardown of the last test in the class.

    4 module级别的scope

    image

    test_fixture.py
    image

    test_fixture_2.py
    image
    执行
    image
    可以看到,同一个py文件里面,所有的test输出的list对象id是相同的,说明这些test共享了一个list对象
    不同的py文件,test输出的id对象是不同的,说明不同的py文件各自独立执行了fixture,拿到了各自独立的list对象

    5 session级别的scope

    image
    test_fixture.py test_fixture_2.py内容不变
    执行
    image
    可以看到,不同py文件的test函数,都输出相同id的list对象,说明不同py文件的test,都共享了同一个list对象,fixture在整个测试绘画期间只执行了一次

    the fixture is destroyed at the end of the test session

    6 package级别的scope

    首先我的目录结构如下
    image
    两个conftest文件的内容都是相同的
    image
    注意,每个目录下添加文件__init__.py,内容不用写。所谓package,就是包含__init__.py文件的目录
    test_fixture_2.py test_fixyure.py内容与之前相同
    test02目录下test_fixture_03.py
    image
    在test01 test02 同级目录下执行 pytest -k "fixture" -s -v
    执行结果
    image
    可以看到 test01目录下所有的test输出id是相同的,test02目录下的test输出的id是不同的

    这事,其他内容不变,把test02目录下的conftest.py删除,把test01下的conftest.py移动到test01 test02的同级目录中
    再来执行
    image
    这时,你会看到所有的输出id都是相同的
    这就有意思了,这里牵涉到一个conftest.py的范围的问题,conftest.py放在不同的目录下,它能影响的范围也是不同的

  • 相关阅读:
    数据新生态:Web3如何重新定义个人数据权利
    代码随想录算法训练营第五十七天| 392.判断子序列、115.不同的子序列
    尚硅谷笔记——React组件的三大属性props、state、ref
    樱花飘落
    使用easyexcel导出\入excel
    第3季社区Task挑战赛开启,一起玩开源
    绿洲艺术学院网站
    使用Java客户端发送消息和消费的应用
    linux的Java运行
    二叉搜索树的实现
  • 原文地址:https://www.cnblogs.com/MyRecords/p/17374910.html