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

这篇具有很好参考价值的文章主要介绍了pytes中fixture的scope: 决定可以在什么范围内共享fixture。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1fixture的scope

在@pytest.fixture(scope='xxx')中,scope的可选值有5个,以下是官网的描述
pytes中fixture的scope: 决定可以在什么范围内共享fixture

2 function级别的scope

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

执行结果
pytes中fixture的scope: 决定可以在什么范围内共享fixture

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

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

3 class级别的scope

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

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

执行
pytes中fixture的scope: 决定可以在什么范围内共享fixture
注意,每个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

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

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

test_fixture_2.py
pytes中fixture的scope: 决定可以在什么范围内共享fixture
执行
pytes中fixture的scope: 决定可以在什么范围内共享fixture
可以看到,同一个py文件里面,所有的test输出的list对象id是相同的,说明这些test共享了一个list对象
不同的py文件,test输出的id对象是不同的,说明不同的py文件各自独立执行了fixture,拿到了各自独立的list对象

5 session级别的scope

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

the fixture is destroyed at the end of the test session

6 package级别的scope

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

这事,其他内容不变,把test02目录下的conftest.py删除,把test01下的conftest.py移动到test01 test02的同级目录中
再来执行
pytes中fixture的scope: 决定可以在什么范围内共享fixture
这时,你会看到所有的输出id都是相同的
这就有意思了,这里牵涉到一个conftest.py的范围的问题,conftest.py放在不同的目录下,它能影响的范围也是不同的文章来源地址https://www.toymoban.com/news/detail-434398.html

到了这里,关于pytes中fixture的scope: 决定可以在什么范围内共享fixture的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 格局决定结局,进化还是毁灭,Prompt在其中扮演什么角色

    最近, OpenAI 推出了基于 GPT 模型的 GPTs 以及 Agent Stroe 系统,引发广泛关注。业内讨论热点主要集中在吸引用户体验方面、商业利益方面等。而对于很多正投身于Agent智能体创业的公司,则往往给出了消极的评价,认为只是一个商业行为,并没有在技术上有显著的意义。同样一件

    2024年02月05日
    浏览(31)
  • acceptNavigationRequest()是Qt WebEngine模块中的一个函数,用于在Web页面加载时决定是否接受导航请求。它可以用于自定义处理链接点击或页面导航的行为

    acceptNavigationRequest() 是Qt WebEngine模块中的一个函数,用于在Web页面加载时决定是否接受导航请求。它可以用于自定义处理链接点击或页面导航的行为。 该函数通常用于继承自 QWebEngineView 或 QWebEnginePage 的类中重写。其函数原型如下: 参数说明: url :导航请求的URL。 type :导

    2024年02月04日
    浏览(44)
  • JavaScript中的作用域(scope)是什么?以及有哪些类型的作用域?

    前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发者,这里都将为你提供一个系统而又亲切的学习平台。在这个

    2024年02月12日
    浏览(31)
  • 不用路由器也可以两台电脑共享上网的方法

    不用路由器也可以两台电脑共享上网 假设有两台电脑,电脑A和B,其中一台A有网线,B没有,那么在没有路由器的时候B如何上网呢 首先A电脑 右击网上邻居!点击属性! 出现图一: 右击无线网卡属性,进入TCP/IP协议配置窗口 见图2: 按照图2来配置 再点击“无线网络配置标签

    2024年02月07日
    浏览(52)
  • ngrok内网穿透可以实现资源共享吗?快解析更加简洁

    随着互联网的高速发展,越来越多的人开始意识到内网穿透技术的重要性。在这一技术中,ngrok已经成为了一个备受关注的工具。然而,很多人对于ngrok是否可以进行资源共享存在疑问。本文将从新的角度出发,深入探讨这个问题。 了解什么是ngrok内网穿透。简而言之,ngrok是

    2024年02月13日
    浏览(31)
  • 在线支付线上支付是什么?其应用范围

    百里支付 1途径  在线支付是一种通过第三方提供的与银行之间的支付接口进行支付的方式,这种方式的好处在于可以直接把资金从用户的银行卡中转账到网站帐户中,汇款马上到帐,不需要人工确认。与到银行转账[包括通过网上个人银行转账或者到银行柜台办理现金转账

    2024年02月11日
    浏览(27)
  • 解决安装win10/win11微软登录自动路径和文件夹名,已经本地账户可以使用共享文件夹,微软账户使用共享文件夹验证错误的问题

    我找到解决全新安装Windows,微软用户登录自动生成用户名,以及默认使用账户姓名作为全名 ,让强迫症痛苦万分的方法了。 同时解决本地账户共享文件夹验证通过,微软账户共享文件夹验证不通过(或者找不对访问账户名和密码)的问题。 Win10安装后,用本地账户登录,同

    2024年02月16日
    浏览(81)
  • 标准化拉普拉斯矩阵特征值范围为什么小于等于2?(证明)

    谱图使用标准化拉普拉斯矩阵 L n o r m L^{norm} L n or m 的一个重要原因就是, L n o r m L^{norm} L n or m 比拉普拉斯矩阵 L L L 稳定。很多资料只是简单地介绍了 L n o r m L^{norm} L n or m ,在kipfGCN中也只是简单地提到 L n o r m L^{norm} L n or m 的特征值不大于2。本文搜集了相关lecture,并推导

    2024年02月11日
    浏览(43)
  • pytest fixture夹具,@pytest.fixture

    fixture 是pytest 用于测试前后进行预备,清理工作的代码处理机制 fixture相对于setup 和teardown:         fixure ,命名更加灵活,局限性比较小         conftest.py 配置里面可以实现数据共享,不需要import 就能自动找到一些配置 setup / teardown 模块级 setup_module / teardown_m

    2024年02月10日
    浏览(26)
  • C#是什么?可以用来做什么?

            C#(读作“C Sharp”)是一种容易使用不复杂新型的编程语言,不仅是面向对象,它的类型还安全。C# 源于 C 语言系列,C、C++、Java 和 JavaScript 程序员很快就可以上手使用。C# 是一个现代的、通用的、面向对象的编程语言,它是由微软(Microsoft)开发的,由 Ecma 和

    2024年02月21日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包