首页 > 其他分享 >pytest--conftest.py全局用例公用

pytest--conftest.py全局用例公用

时间:2023-04-03 15:34:37浏览次数:36  
标签:-- py fixture print 用例 conftest pytest test

前言

当多个测试用例文件,需要调用同一个fixture时候。比如登陆的fixture,连接数据库的fixture,如果在每个测试用例文件里都加上fixture,代码就会看着十分别扭,且测试用例与fixture混杂在一起,不方便维护。那么pytest也提供了conftest.py这个文件来帮助我们完成对fixture的管理

 

conftest.py介绍

conftest.py可以理解成一个专门用于存放的fixture的文件,能根据需求来设置不同的fixture作用域或者conftest.py的位置,来达到预期的目标

conftest特点:

  • conftest.py的名称是固定名称,不可修改
  • conftest.py需要与调用的测试用例位于同一个pakage目录下,位于下级目录的测试用例,也可调用上级的conftest.py中的fixture
  • 不需要import导入conftest.py,pytest执行测试用例时会自动识别的conftest.py。conftest.py放到项目根目录下,那么全局都可以调用fixture
  • 每个目录都可以有自己的conftest.py文件,一个项目中可以拥有多个conftest.py文件

 

conftest.py例子

结构目录:

根目录conftest.py:

设置了两个fixture,login是session级别,log是function级别

import pytest

@pytest.fixture(scope='session')
def login():
    print('===开始登陆====')
    yield
    print('===退出登陆====')

@pytest.fixture()
def log():
    print('----记录log----')
    yield
    print('----log记录结束----')

testcase.py:

import pytest

def test_01(log,login):
    print("test_01执行")

def test_02():
    print("test_02执行")

test目录下conftest.py:

设置一个session级别的fixture(token),等下运行可以查看下下级目录的conftest.py的作用域范围

import pytest


@pytest.fixture(scope='session')
def token():
    print('token生成')
    yield
    print('token结束')

test目录下test_01.py:

def test01_1(log):
    print('test01_1执行')

def test01_2(token):
    print('test01_2执行')

 test目录下test_02.py:

class Test_01():
    def test02_01(self):
        print('test02_01用例执行')
    def test02_02(self,log):
        print('test02_02用例执行')

那么执行命令:pytest -sv来查看具体输出结果:

 总结:

1、根目录的conftest.py中的fixture可以被子目录下的测试用例调用(test/test_02.py::Test_01::test02_02调用了log的fixture)

2、根目录的conftest.py的session级别fixture的作用域就是整个session(login的调用在所有测试用例的前、后只执行了一次)

3、子目录的conftest.py的session级别fixture的作用域是当前子目录中设置了session级别fixture执行顺序之后的所有测试用例(test/test_01.py::test01_2设置了session级别的fixture,但test/test_01.py::test01_1却没有包含在其中)

 

 

 

标签:--,py,fixture,print,用例,conftest,pytest,test
From: https://www.cnblogs.com/trystudy/p/17283187.html

相关文章

  • Apptentive:植入式工具帮开发者收集用户反馈
    Apptentive,提供一种可嵌入应用的装置帮主开发者收集用户反馈的创业公司,日期获得了120万美元的种子融资。该轮融资来自Founder’sCo-Op、GoogleVentures、SocialLeverage、GoldenVenturePartners和西雅图一些天使投资。该公司的创始人分别都是微软、雅虎、苹果和Greystripe的......
  • CANN训练:模型推理时数据预处理方法及归一化参数计算
    摘要:在做基于AscendCL模型推理时,通常使用的有OpenCV、AIPP、DVPP这三种方式,或者是它们的混合方式,本文比较了这三种方式的特点,并以Resnet50的pytorch模型为例,结合训练营提供的sample,说明了分别是如何实现预处理的。本文分享自华为云社区《【2023·CANN训练营第一季】——模型推......
  • 淘宝Buy+负责人胡晓航:从技术和产品维度看Buy+ VR购物
    导语:阿里巴巴是怎么做VR购物的?VR购物会成为电商的未来吗?此次公开课我们邀请到了Buy+负责人胡晓航,为你解答所有这些疑问。一年一度的网购狂欢节“双十一”刚刚过去,这不仅仅是购物者的盛宴,也是各种新技术登场的时刻,其中就包括Buy+ VR购物。有很多人喜欢网购体验,端着手机、......
  • git提交443
    通过IDEALPUSH时提示以下错误fatal:unabletoaccess'https://github.com/18618450592/mygit.git/':OpenSSLSSL_connect:SSL_ERROR_SYSCALLinconnectiontogithub.com:44315:21:59.671:[..\..\mygit]git-ccredential.helper=-ccore.quotepath=false-cl......
  • 研究人员称用Waze数据可有效阻止交通事故
    虽说苹果可能是不想收购waze了,但不代表别人不喜欢用。以色列的一组研究人员发现,利用众包地图waze的数据,至少在理论上可以让政府知道在哪些事故高发地段投入更多资源来避免潜在事故的发生。研究人员研究了5000多起事故报告和30000份出警报告来确定哪些地方是事故多发地段,以及警察是......
  • Postman测试文件上传接口
         定义请求方式和请求路径请求体选择bodybody下选择form-data在参数中输入filekey值输入完file后,在下拉框中选择file此时value会显示一个SelectFiles按钮,点击按钮即可打开我的电脑并选择需要上传的文件点击发送请求即可如何该接口需要请求头......
  • 【整理】html5知识点2
    1、=========================================================HTML5Canvas创建一个画布(Canvas)<canvasid="myCanvas"width="200"height="100"></canvas>使用JavaScript来绘制图像<script>varc=do......
  • 第六周-电子商务网站行为分析及服务推荐
    #代码11-1importosimportpandasaspd#修改工作路径到指定文件夹os.chdir("D:/anaconda/python-work/Three/第十一章")#第二种连接方式importpymysqlaspmcon=pm.connect(host='localhost',user='root',password='aA111111',database=&......
  • 详解语音处理检测技术中的热点——端点检测、降噪和压缩 | 硬创公开课
    作为一种人机交互的手段,语音的端点检测在解放人类双手方面意义重大。同时,工作环境存在着各种各样的背景噪声,这些噪声会严重降低语音的质量从而影响语音应用的效果,比如会降低识别率。未经压缩的语音数据,网络交互应用中的网络流量偏大,从而降低语音应用的成功率。因此,音频的端点检测......
  • Android开发-Android常用组件-SeekBar拖动条
    4.9 SeekBar拖动条android:max滑动条的最大值android:progress滑动条的当前值android:secondaryProgress二级滑动条的进度android:thumb滑块的drawable 接着要说下SeekBar的事件了,SeekBar.OnSeekBarChangeListener我们只需重写三个对应......