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. C++基础之字符输出 cout

    找了一些视频教程,课程的示例是输入一个三角形 要输入这样的图案,思路是可以进行拆解,分为两三角形分别输出,先输入一部分,比如,先输出上半部分三角形: 找到规律,可以发现,上面的三角形是7颗星,也就是说 ...

  2. ubuntu手动创建快捷方式

    新建document,重命名为XXX.desktop,打开文件 以sublime为例,填写 [Desktop Entry] Version=1.0 Type=Application Name=Subl ...

  3. decay_rate, decay_steps ,batchsize,iteration,epoch

    (96条消息) decay_rate, decay_steps ,batchsize,iteration,epoch_hellocsz的博客-CSDN博客_decay_steps (1)batchsi ...

  4. Python:合并两个列表成为一个list

    如何合并两个列表,今天就来探讨一下: 方法一:最笨的方法实现 list1=[1,2,3]list2=[4,5,6]new_list=[]for item in list1: new_list.appe ...

  5. WinForm分辨率适应-高DPI自动缩放

    https://www.cnblogs.com/alittlecooing/p/WinForm-HighDPI.html 新建app.manifest文件后,去掉注释就可

  6. Linux shell字符操作总结

    各符号介绍 字符串长度统计 ${#string}: 字符串string的长度 字符串截取 ${string#*substring}: 从左到右截取特定字符substring第一次出现位置之后的字符串 ...

  7. Linux & 标准C语言学习 <DAY12_1>

          10.函数指针         函数名就是一个地址(整数),代表了该函数在代码段中的位置         函数指针就是专门指向某种函数的指针,它里面存储的是该函数在代码段中的位置(函数名) ...

  8. 【WEB UI自动化】Selenium爬取用户的知乎回答时遇到10002:请求参数异常,请升级客户端后重试

    这里分享一个低配版知乎爬虫,利用了Selenium模块 爬取的过程中遇到了10002:请求参数异常,请升级客户端后重试,调用知乎某用户的回答API返回的HTTP状态码是403 Forbidden 之后 ...

  9. Jira使用浅谈篇二

    本篇参考:https://university.atlassian.com/student/collection/850385/path/1083901 本篇接上文,上文已经对项目设置了一个基础的配置 ...

  10. 解放生产力:30+实用AI工具汇总

    除了ChatGPT,还有哪些好用AI工具?带着这个问题,也为了解AIGC已经在哪些场景落地,我体验了30多个AI工具并且分享出来,希望对你有帮助. 文字 ChatGPT -- 解决任何问题地址:htt ...