pytes中fixture的scope: 决定可以在什么范围内共享fixture
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的更多相关文章
- angularjs中的directive scope配置
angularjs中的directive scope配置 定义directive其中重要的一环就是定义scope,scope有三种形式: 默认的scope,DOM元素上原有的scope scope: ...
- 聊一下JS中的作用域scope和闭包closure
聊一下JS中的作用域scope和闭包closure scope和closure是javascript中两个非常关键的概念,前者JS用多了还比较好理解,closure就不一样了.我就被这个概念困扰了很久 ...
- 【Transact-SQL】统计某字段中的值第一次出现后的2小时内出现的次数
原文:[Transact-SQL]统计某字段中的值第一次出现后的2小时内出现的次数 table1 name createdate a 2011-03-01 10:00:00 a 2011-03-01 ...
- Spring中bean的scope详解
如何使用spring的作用域: <bean id="role" class="spring.chapter2.maryGame.Role" scope=& ...
- 用AngularJS开发的过程中如何查看Scope内容
scope的继承就好比JS的原型链继承,深入理解Scope:http://www.lovelucy.info/understanding-scopes-in-angularjs.html 通过查看官网 ...
- Spring中bean的scope
Spring容器中的bean具备不同的scope,最开始只有singleton和prototype,但是在2.0之后,又引入了三种类型:request.session和global session,不 ...
- spring中bean的scope属性理解
bean的scope属性有prototype,singleton,request, session几个属性 spring和struts2整合的时候,struts2的action要配置成scope=&q ...
- angularjs中directive声明scope对象的用法
总的来说用法 分三种: >1: scope: false --> 继承父域,实现 双向数据绑定 示例代码 可自测: <!DOCTYPE html> <html lang ...
- (转)Maven POM中的各种scope的行为总结
原地址:https://blog.csdn.net/cnweike/article/details/52221410 compile:默认的scope.任何定义在compile scope下的依赖将会 ...
- Spring_2_Spring中lazy-init和scope属性
1)springTest类: public class springTest { @Test public void instanceSpring() { AbstractApplicationCon ...
随机推荐
- AE|蒙版、遮罩、轨道遮罩全面解析
相信很多初学者都有这样的困惑,搞不清蒙版和遮罩这两个概念的区别,甚至有的人认为它们就是一个东西. 这两个看似一样的概念,其实是有很大的区别的,今天主要从定义和作用方式这两个方面进行解析,相信对各位认识 ...
- C# 循环给多个连续编号的控件赋值
C# 循环给多个连续编号的控件赋值 我们经常在 winform 界面上用很多文本框用来显示一组数据,文本框前面有Label标识.我们得到的数据也经常是一个list 或者数组的形式的.需要给这些文本框赋 ...
- 【Python】validator进行数据校验
https://pypi.org/project/validator.py/ 校验参数必要性 from validator import Required, In, InstanceOf, Lengt ...
- Glist 按钮属性
grayed 变灰与否不影响点击等事件 touchable 为false,不会变灰,但会无法点击, enabled为false自动变灰,且无法点击
- 区块链技术与应用:02-BTC-密码学原理
本文为个人整理笔记,知识点来源于北京大学肖臻老师的<区块链技术与应用>公开课视频:https://www.bilibili.com/video/BV1Vt411X7JF?from=sear ...
- vite不能用@做为路径的解决方法
vite创建vue3后,发现原来用@做为路径的不能用了,报错信息是 Internal server error: Failed to resolve import "@ 在网上查了一下资料, ...
- CSS clip-path 属性
属性定义及使用说明 clip-path 属性使用裁剪方式创建元素的可显示区域.区域内的部分显示,区域外的隐藏.可以指定一些特定形状. 注意: clip-path 属性将替换已弃用的 clip 属性. ...
- 基于Sekiro的jsRPC的使用和安装
什么是jsRPC 说实话在介绍 JSRPC 我向大家推荐一个库 Selenium-wire 感觉和JSrpc的原理很像 RPC指远程过程调用,APP里面的RPC大家比较熟悉了. 那什么是jsRPC,顾 ...
- 第五章 C控制语句:循环
一个好的语言应该能够提供以下三种形式的程序流: ●顺序执行语句序列(顺序) ●在满足某个条件之前反复执行一个语句序列(循环) ●通过进行一个判断在两个可选的语句序列之间选择执行(分支) 5.1whil ...
- 小编亲身实操,教你配置phpstorm与xdebug的调试配置,不成功你骂我
开发php,还是找个专业的Ide较好,vscode毕竟在php上不专业,需要下载各种插件才行,还不支持多线程调试,因此小编下载了phpstorm,打算以后用phpstorm来开发php项目,断点调试代 ...