首页 > 其他分享 >pytes中fixture的scope: 决定可以在什么范围内共享fixture

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

时间:2023-05-05 20:35:46浏览次数:25  
标签:fixture py list pytes test scope id

1fixture的scope

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

2 function级别的scope

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

执行结果
image

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

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

3 class级别的scope

image

image

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

image

test_fixture.py
image

test_fixture_2.py
image
执行
image
可以看到,同一个py文件里面,所有的test输出的list对象id是相同的,说明这些test共享了一个list对象
不同的py文件,test输出的id对象是不同的,说明不同的py文件各自独立执行了fixture,拿到了各自独立的list对象

5 session级别的scope

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

the fixture is destroyed at the end of the test session

6 package级别的scope

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

这事,其他内容不变,把test02目录下的conftest.py删除,把test01下的conftest.py移动到test01 test02的同级目录中
再来执行
image
这时,你会看到所有的输出id都是相同的
这就有意思了,这里牵涉到一个conftest.py的范围的问题,conftest.py放在不同的目录下,它能影响的范围也是不同的

标签:fixture,py,list,pytes,test,scope,id
From: https://www.cnblogs.com/MyRecords/p/17374910.html

相关文章

  • vue中scoped 在文件引入中的作用
    首先搞清楚scoped是干啥的?scoped的引入主要是上线了样式的模块化私有化,即当前组件的样式只对当前组件起作用。当vue组件被vue-loader解析的时候,对于style上加了scope属性的组件,会主动加上data-v-xx的属性来唯一标识当前组件,若当钱组件内部存在子组件,只有子组件的最外层会加上唯一......
  • pytest的fixture
    1什么是[email protected]_fruit():returnFruit("apple")如上,用@pytest.fixture装饰的函数就是fixture2fixture的作用我的理解是为test函数的运行提供数据、必要的环境支持等3fixture的定义与使用fixture直接用于test函数@pytest.fixturedefmysq......
  • Pytest统计用例的个数并将测试结果群通知
    背景完成了公司的接口自动化测试,现在需要将测试结果,包括总的用例数、成功用例数、失败用例数等通知到公司的teams群,并且可以查看allure报告代码需要在项目根目录下的conftest.py文件中编写,运行时会自动统计用例,代码如下defpytest_terminal_summary(terminalreporter,exits......
  • pytest常用断言
    如上官网所说,pytest使用python中的assert来比较实际值与预期值,实现断言功能1常用的断言方式assertxxxasserta==basserta!=basserta>basserta<bassertainbassertanotinbassertinstance(a,int)asserta>banda>c同时断言多个条件asserta>bo......
  • 入门3-Pytest测试用例运行方式(1)Main方法运行
    通过主函数main方式执行If__name__== ‘__main__’:  Pytest.main({“--vs”})一般run.py里用main()方法,里边可以加参数 ......
  • windows11 下使用 阿里云 modelscope docker 环境 运行参考
    昨天看视频我们做了个能对话的AI派蒙,免费给大家玩!发现阿里有一个语音转文字的模型(paraformer),之前处理这种需求一直都是直接调用服务商提供好的API接口突然想尝试一下本地搭建,虽然和直接调用API没啥区别(都不知道实现细节),但是这是本地化运行,可以在内网环境运行.因为平......
  • pytest的几种执行方式
    1pytestxxxx2python-mpytestxxxxpython-mpytest--html=./report/rep2.htmltest_env_pytest_ini.py这个与pytest几乎是相同的,官网是这样说的3pythonpytestxxx这与python-mxxx很像,对于pytest执行结果来说没有区别,python-mxx如上截图所说,它会将当前工作目录......
  • No service of type Factory<LoggingManagerInternal> available in ProjectScopeServ
    最近从GitHub上down下来一个项目,却在导入到AS的时候一直报Error:NoserviceoftypeFactory<LoggingManagerInternal>availableinProjectScopeServices.这个错误clean一下项目之后,报出了详细错误信息接下来仔细看异常信息,Couldnotcreatepluginoftype'AndroidMavenPlugin......
  • pytest命令行选项
    一、pytest有很多命令行选项如-v输出详细信息-q简要输出-s打印输出-k"xxx"在filename、classname、functionname来匹配xxx规则,pytest只运行符合匹配结果的部分-mxx寻找具有xxmark的test来运行或不运行-x遇到失败即停止-nnum使用数量为nun的进程并行运行测试......
  • <template slot-scope="scope">
    通过后端返回的具体值,前端可以映射想要的值如:status状态值为0就是代办,为1就是处置,为2就是完成<el-table-columnlabel="工单状态"prop="status"><templateslot-scope="scope"><spanstyle="margin-left:10px">{{......