1fixture的scope

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

2 function级别的scope

添加如下代码到pytest.ini,便于输出日志



新建conftest.py文件,把fixture函数写入其中,便于后面fixture可以在多个py文件中的test函数中引用

conftest.py



pytest的fixture默认级别就是 funtion,因此可以不写scope参数

test_fixture.py

执行结果

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



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

3 class级别的scope

执行



注意,每个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

test_fixture.py

test_fixture_2.py



执行



可以看到,同一个py文件里面,所有的test输出的list对象id是相同的,说明这些test共享了一个list对象

不同的py文件,test输出的id对象是不同的,说明不同的py文件各自独立执行了fixture,拿到了各自独立的list对象

5 session级别的scope



test_fixture.py test_fixture_2.py内容不变

执行



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



the fixture is destroyed at the end of the test session

6 package级别的scope

首先我的目录结构如下



两个conftest文件的内容都是相同的



注意,每个目录下添加文件__init__.py,内容不用写。所谓package,就是包含__init__.py文件的目录

test_fixture_2.py test_fixyure.py内容与之前相同

test02目录下test_fixture_03.py



在test01 test02 同级目录下执行 pytest -k "fixture" -s -v

执行结果



可以看到 test01目录下所有的test输出id是相同的,test02目录下的test输出的id是不同的

这事,其他内容不变,把test02目录下的conftest.py删除,把test01下的conftest.py移动到test01 test02的同级目录中

再来执行



这时,你会看到所有的输出id都是相同的

这就有意思了,这里牵涉到一个conftest.py的范围的问题,conftest.py放在不同的目录下,它能影响的范围也是不同的

pytes中fixture的scope: 决定可以在什么范围内共享fixture的更多相关文章

  1. angularjs中的directive scope配置

    angularjs中的directive scope配置 定义directive其中重要的一环就是定义scope,scope有三种形式: 默认的scope,DOM元素上原有的scope scope: ...

  2. 聊一下JS中的作用域scope和闭包closure

    聊一下JS中的作用域scope和闭包closure scope和closure是javascript中两个非常关键的概念,前者JS用多了还比较好理解,closure就不一样了.我就被这个概念困扰了很久 ...

  3. 【Transact-SQL】统计某字段中的值第一次出现后的2小时内出现的次数

    原文:[Transact-SQL]统计某字段中的值第一次出现后的2小时内出现的次数 table1 name createdate a 2011-03-01 10:00:00 a 2011-03-01 ...

  4. Spring中bean的scope详解

    如何使用spring的作用域: <bean id="role" class="spring.chapter2.maryGame.Role" scope=& ...

  5. 用AngularJS开发的过程中如何查看Scope内容

    scope的继承就好比JS的原型链继承,深入理解Scope:http://www.lovelucy.info/understanding-scopes-in-angularjs.html 通过查看官网 ...

  6. Spring中bean的scope

    Spring容器中的bean具备不同的scope,最开始只有singleton和prototype,但是在2.0之后,又引入了三种类型:request.session和global session,不 ...

  7. spring中bean的scope属性理解

    bean的scope属性有prototype,singleton,request, session几个属性 spring和struts2整合的时候,struts2的action要配置成scope=&q ...

  8. angularjs中directive声明scope对象的用法

    总的来说用法 分三种: >1: scope: false  --> 继承父域,实现 双向数据绑定 示例代码 可自测: <!DOCTYPE html> <html lang ...

  9. (转)Maven POM中的各种scope的行为总结

    原地址:https://blog.csdn.net/cnweike/article/details/52221410 compile:默认的scope.任何定义在compile scope下的依赖将会 ...

  10. Spring_2_Spring中lazy-init和scope属性

    1)springTest类: public class springTest { @Test public void instanceSpring() { AbstractApplicationCon ...

随机推荐

  1. Python Type Hint中Optional[str]=None和str=None的区别

    Python Type Hint中Optional[str]=None和str=None的区别 1 问题来源 在读到Fluent Python, 2ed Edition, P260时产生了一些疑问: ...

  2. centos 开启关闭网卡(禁用网卡)

    说明我之前在工作中使用的服务器很多都是多网卡服务器,他可以使用不同的网卡连接不同的网段,但是,由于个别情况突发,有时候可能需要关闭某些网卡,禁止它们访问到网络,也就是需要关闭网卡.步骤1.查看有哪些网 ...

  3. loadrunner添加头部

    web_add_auto_header("token_id", "{token_id}"); 或 web_add_header("token_id&q ...

  4. ReentrantLock源码阅读

    默认构造方法初始化同步器为非公平同步器 /** * Creates an instance of {@code ReentrantLock}. * This is equivalent to usin ...

  5. Javaweb问题解决--在.java文件里面写sql语句模糊查询不成功的原因

    问题描述 在上学期,我就遇到了这个问题(别骂别骂),然后当时卡住之后,Mybatis闯入了我的视线,然后直接换用了较为方便的Mybatis框架结构,这个问题也就被搁置了,今天重新提起,优势慢慢地查阅了 ...

  6. 使用float进行比较问题处理

    float compare Abstract 使用float数据进行精确计算和比较,可能由于精度问题导致程序逻辑异常. Explanation 使用float数据进行比较,计算机表达double和fl ...

  7. 基于Admin.NET框架的前端的一些改进和代码生成处理(1)

    Admin.NET 是一套基于Furion/.NET 6实现的通用管理平台,模块插件式开发,框架包含了常规的权限管理.字典等管理模块,以及一些Vue3的Demo案例,框架前后端分离.后端基于基于Fur ...

  8. EF Core从TPH迁移到TPT

    Intro EF Core支持多种方式处理具有继承关系的表,现在支持TPH.TPC(EF Core 7).TPT,具体的实现方式可以参考官方文档和这篇文章. 大致总结一下不同的方式的区别: TPH:所 ...

  9. MySQL的group_concat()函数简单用法

    将group by产生的同一个分组中的值连接起来,返回一个字符串结果. group_concat函数首先根据group by指定的列进行分组,将同一组的列显示出来,并且用分隔符分隔.由函数参数(字段名 ...

  10. PVE Cloud-INIT 模板配置

    PVE Cloud-INIT 模板配置 Cloud-init是什么 Cloud-init是开源的云初始化程序,能够对新创建弹性云服务器中指定的自定义信息(主机名.密钥和用户数据等)进行初始化配置.通过 ...