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 ...
随机推荐
- mysql修改数据库表及字段的编码格式
1.修改表的编码格式 ALTER TABLE `table` DEFAULT CHARACTER SET utf8; 2.修改字段编码格式 ALTER TABLE `table` CHANGE `字段 ...
- easycode模版-基于ruoyi-cloud
##定义初始变量 #set($tableName = $tool.append($tableInfo.name, "Controller")) ##设置回调 $!callback. ...
- ElasticSearch 单点部署
1.下载指定的ES版本(7.17.3) https://www.elastic.co/downloads/past-releases/elasticsearch-7-17-3 2.单点部署elasti ...
- python tkinter Checkbutton的新增和清除 取值
from tkinter import * root = Tk() name = StringVar() check_box_list = [] ent=Entry(root,textvariable ...
- 关于npm audit fix无法修复问题的解决办法
这两天新建项目 使用npm install的时候一直出现这个错误,使用npm audit fix 无法修复. 查询解决办法: 可以使用淘宝镜像源,会自动修复,然后下载相关依赖包 解决方法如下: 1.使 ...
- 安装了lrzsz ,使用时,还是提示找不到
安装了lrzsz ,使用时,还是提示找不到
- 【python】yaml文件的读写
[python]yaml文件的读写 冰冷的希望 2020-10-22 18:31:47 442 收藏 1分类专栏: python 文章标签: python yaml版权 python专栏收录该内容67 ...
- 如何利用Apifox通过签名计算及数据加解密进行用户认证接口测试?
用户注册场景:输入签名数据signature,appId,13位时间戳timestamp,6位随机数nonce,merchantId(非必填,本次不填)的请求参数发送给服务器,服务器返回响应数值后,校 ...
- JavaWeb学习笔记第二弹
(续集)DQL:查询操作 1.排序查询 排序方式:(仅有一个排序参照时) 1.升序:ASC(默认) 命令:**select * from 表名 order by 列名 (asc);** 2.降序:DE ...
- 谷歌浏览器配置Selenium,并配合python使用
python环境准备 python 需要安装selenium ,这个直接pip安装即可 pip install selenium -i http://pypi.douban.com/simple -- ...