首页 > 其他分享 >关于conftest和fixtures

关于conftest和fixtures

时间:2024-07-04 11:11:12浏览次数:1  
标签:调用 函数 py fixture module conftest 关于 fixtures

一、 conftest.py 文件

  作用:存放case的前提条件和后置条件配置函数;一般该类函数都会使用fixture装饰(fixture该篇第二点会介绍);使用conftest里面的函数时不需要导入 conftest.py 这个文件。只需将函数名作为变量传入test_case即可调用;
  使用 conftest.py 的规则:
特点:

  1. conftest.py 这个文件名是固定的,不可以更改。
  2. conftest.py 与运行用例在同一个包下,并且该包中有 init.py 文件
  3. 使用的时候不需要导入 conftest.py,pytest 会自动识别到这个文件
  4. 放到项目的根目录下可以全局调用,放到某个 package 下,就在这个 package 内有效。

二、fixture

  pytest中可以使用@pytest.fixture装饰器来装饰一个方法,被装饰方法的方法名可以作为一个参数传入到测试方法中。可以使用这种方式来完成测试之前的初始化,也可以返回数据给测试函数;
  fixture里面有一个参数scope,通过scope可以控制fixture的作用范围,根据作用单位大小划分为:session>module>class>function

  1. function函数或者方法级别都会被调用
  2. class类级别调用一次
  3. module模块级别调用一次
  4. session是多个文件调用一次(可以.py文件调用,每个.py文件就是一个module);fixture scope 为 session 级别是可以跨 .py 模块调用的,也就是当我们有多个 .py 文件的用例时,如果多个用例只需调用一次 fixture,可以将 scope='session',并且写到 conftest.py 文件里。写到 conftest.py 文件可以全局调用这里面的方法。

2.1 .将fixture作为函数参数
  通常使用setup和teardown来进行资源的初始化。如果有这样一个场景,测试用例1需要依赖登录功能,测试用例2不需要登录功能,测试用例3需要登录功能。这种场景setup、teardown无法实现,可以使用pytest fixture功能,在方法前加个@pytest.fixture装饰器,加了这个装饰器的方法可以以参数的形式传入到方法里面执行。
2.2 将fixture作为模块参数
  整个模块有多条测试用例,需要在全部用例执行之前打开浏览器,全部执行完之后去关闭浏览器,打开和关闭操作只执行一次,如果每次都重新执行打开操作,会非常占用系统资源。这种场景除了setup_module,teardown_module可以实现,还可以通过设置模块级别的fixture装饰器(@pytest.fixture(scope="module"))来实现

如果每条测试用例都需要添加 fixture 功能,则需要在每一要用例方法里面传入这个fixture的名字,这里就可以在装饰器里面添加一个参数 autouse='true',它会自动应用到所有的测试方法中,只是这里没有办法把返回值给测试用例。

俗话说的好百闻不如一见,下面展示一下,我们经常使用的场景;

示例例:

下图就是conftest.py文件中的前置条件函数【ModulInit】,并且以fixture装饰;

注:【ModulInit】该函数主要功能是登录设备,并获取该设备型号

下图是test_case函数调用前置条件函数的方式;将前置条件函数名称直接作为参数传入到case中,那么在执行该case之前,程序会自动先执行前置函数【ModulInit】;然后再执行case;并且该前置函数是有返回值的(返回值为一个列表),使用返回值也是直接前置函数名称后跟序号来取;ModulInit[0/1/2]

 

标签:调用,函数,py,fixture,module,conftest,关于,fixtures
From: https://www.cnblogs.com/ljkuailexuexi/p/18283192

相关文章

  • 关于搭建可商用AI平台的小感想
    前言AI时代已经到来,从智能客服到图像识别,再到语音识别,AI应用已经无处不在,而且AI绘图聊天等创新应用的市场需求也在不断增长。作为开发者,学习搭建自己的AI平台已经成为必然趋势,不仅能提升我们自己的技能,还能为我们带来更多职业和商业机会,不仅局限于科技行业,它在医疗、金融、教育等......
  • 关于网速限制
    因为之前一直在考虑拥塞控制问题,忽略了硬件设备问题,所以在此记录下会影响短距离有线连接网络网速的几个重要硬件:首先是两台主机的网卡NIC,网卡决定了你能发送或者接收的最大速率,不过这个一般不太像是会成为限制的原因,我的两台电脑一台最高1Gbps一台最高2.5Gbps,虽然不是特别高,但是......
  • 一些关于flume的知识知识碎片
    Flume架构Flume概述flume是一个分布式、可靠、和高可用的海量日志采集、聚合和传输的系统。支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(比如文本、HDFS、Hbase等)的能力。flume的数据流由事件(Event)贯穿始终......
  • 关于自定义unordered_set\unordered_map中Hash和KeyEqual:函数对象和lambda表达式简单
    以unordered_set为例,首先在cppreference中查看其模板定义:可以看到Hash类默认是std::hash<Key,KeyEqual类似,本文将Hash以函数对象写出,将KeyEqual以lambda写出。classhashvec{ public: size_toperator()(constvector<int>&vec)const{ returnhash<int>()(vec[0])+hash......
  • 关于人像 智能AI 测试点
    当涉及人像AI测试时,有几个关键方面需要考虑,这些方面包括功能、性能、准确性、安全性和可靠性。以下是一些可能适用的测试方法和策略:功能测试人脸检测功能测试验证系统正确识别人脸,包括不同角度、光照条件和背景。测试系统对多个人脸同时出现的识别能力。面部识别功能测......
  • 关于GPIO合封引脚以及晶振引脚使用注意事项
    CH32系列某些小封装芯片可能会存在合封引脚,如下图。以下图8脚为例,为PD4、PD5、PD1的合封引脚,其中PD1引脚还作为SWIO下载引脚。若要使用PD4引脚作为普通IO输出高低电平,注意在进行程序配置时需要注意:(1)PD4引脚按照GPIO输出配置;(2)合封引脚PD5和PD1要配置为浮空输入模式;(3)PD1同时作为SWIO......
  • 【JavaScript】聊聊js中关于this的指向
    前言最近在看回JavaScript的面试题,this指向问题是入坑前端必须了解的知识点,现在迎来了ES6+的时代,因为箭头函数的出现,所以感觉有必要对this问题梳理一下,所以刚好总结一下JavaScript中this指向的问题。什么是JavaScript在了解this指向的问题前,首先得了解一下什么是JavaScript......
  • yum安装中关于Base.repo的报错问题
     用yum安装出现以下问题: 确认自己的DNS配置正确,而且可以用连接公网,测试如下: 查看repolist:是否为0,是的话继续下面操作yumrepolist备份原来的Base.repomv/etc/yum.repos.d/CentOS-Base.repo/etc/yum.repos.d/CentOS-Base.repo.backup 下载阿里的yum安装的Bas......
  • 关于Mamba和Mamba-2经典论文的学习笔记总结,以及Mamba和Transformer的对比总结,欢迎交流
    最近阅读论文的时候,发现很多基于Mamba改进的CV方向论文,好奇的去了解了一下这个Mamba的起源,以及Mamba-2的提出,简单的对Mamba和Transformer的异同进行了归纳,学到了一些东西,我将从第一部分Mamba的提出背景和结构原理,第二部分Mamba与Transformer的异同,第三部分mamba-2的提出背景......
  • wpf关于Resource,Style的定义与引用,滑动按钮
    当我们使用wpf框架去搭建自己的程序时,一般都会重写wpf原生的一些样式,以达到软件风格的统一于美化,以下介绍一下常见的几种添加Style的方式我们以一个滑动按钮为例1.对当前控件的样式进行更改<ToggleButton><ToggleButton.Style><StyleTarg......