首页 > 其他分享 >如何定义一个夹具/fixture

如何定义一个夹具/fixture

时间:2022-11-13 07:33:34浏览次数:69  
标签:定义 fixture conftest 测试用例 测试 scope 夹具

目录

介绍

在测试当中,fixture为测试用例提供服务,比如配置数据库、获取配置信息、环境准备清理等,对于一些复杂的测试用例编写带来了很大的帮助
fixture一般是定义到conftest.py文件当中,他的作用域是使用fixture的用例从里往外找,比如项目根下一个conftest文件,用例同级目录下有一
个conftest文件,优先使用用例同级下的conftest文件
fixture是通过 @pytest.fixture装饰器去定义,他的作用域有function(默认)、class、module、package、session,定义在conftest文件的fixture在用
例使用的时候不需要倒入,可以直接使用

快速定义fixture

  • 定义fixture
    # conftest.py
    @pytest.fixture
    def x():
        return 1
    
  • 使用fixture
    # test.py
    def test_01(x):
      print(x)
    
    • fixture的使用方法
      • fixture可以调用其他fixture
      • fixture可以可以被重复调用,他就像普通函数一样
      • 一个测试用例或者一个fixture可以调用多个fixture

自动执行fixture

  • 在测试当中不需要调用 在用例执行前自动执行fixture
      @pytest.fixture(autouse=True)
      def x():
          print(1)
    
      # test.py
      def test_01():
        pass
    
    

fixture的参数

  • scopeFixtures 在测试首次请求时创建,并根据它们的scope:
    • function:

      scope='function'
      函数级别的fixture每个测试函数只需要运行一次,测试用例运行前运行一次,测试用例运行后运行一次,它是scope的默认参数。
      
    • class:夹具在类中最后一个测试的拆卸过程中被销毁。

      scope='class'
      类级别的fixture每个测试类只需要运行一次,无论测试类中有多少个类方法都可以共享这个fixture。
      
    • module:夹具在模块中最后一个测试的拆卸过程中被破坏。

      scope='module'
      模块级的fixture每个模块只运行一次,无论模块中有多少个测试函数、测试类、测试类方法或是其他的fixture都可以共享这个fixture。
      
    • package:在拆解包中的最后一个测试时,夹具被破坏。

       scope='package'
      包级别的fixture实际和session的功能一致。
      
    • session:夹具在测试会话结束时被销毁。

       scope='session’
      会话级别的fixture每次会话只需要运行一次,一次pytest会话中的所有测试函数、测试类、测试类方法都可以共享这个fixture。
      
  • autouse默认是False,设置成True的时候不需要调用自动执行
  • name可以通过name参数设置fixture名称
    更多参数详情见
    更多使用方法见
    fixture更详细解刨见

标签:定义,fixture,conftest,测试用例,测试,scope,夹具
From: https://www.cnblogs.com/py-zhq/p/16885344.html

相关文章

  • 自定义标记
    目录介绍注册标记使用标签介绍自定义标记首先要在pytest.ini文件当中注册也可以通过fixture注册,不注册的话不影响使用但是执行的时候就会有警告注册标记#pytest.in......
  • 【数据结构-图】图的定义
    目录1邻接矩阵2邻接表3带权无向图4带权有向图1邻接矩阵#defineMAX50typedefcharVertexType;typedefintEdgeType;typedefstruct{VertexTypeVex[MA......
  • 第二章--使用自定义类
    代码:publicclassClassAndObjectTest{ publicstaticvoidmain(String[]args) { //创建类的实例,定义一个对象变量引用这一实例 MyClassobj=newMyClass(); //......
  • 矩阵秩的定义和相关结论汇总
    (本来在CSDN写的,但是CSDN的公式编辑器一言难尽。。还是博客园的舒适) 秩的定义:对于矩阵$A\in\mathbb{R}^{m\timesn}$,以下陈述为真。(如果$A\inC^{m\timesn}$,则用共轭......
  • C++预定义指令
    C++预定义指令1.预定义器以#开头的命令,称之为预定义器指令。预定义器指令不在编译器中执行,而是在预定义器中运行。常见的预定义器指令为//文件包含指令#include//宏......
  • 自定义函数二分法查找,数组问题
    intfind(intarr1[],intx,inty){intleft=0;intright=y-1;while(right>=left){if(x>arr1[(left+right)/2])left=(left+right)/2+1;elseif(x<arr1[(l......
  • node07_自定义一个html转义模块
    在日常开发的过程中除了转换时间之外,我们可能还会遇到需要将html代码转义成文本,以及将文本转义成html的需求,下面我们来自定义一个转义的模块。具体的思路就是使用正则表达......
  • node_06自定义一个格式化时间模块并使用
    在上一篇博客中,我们知道了自定义模块的定义以及如何暴露出去让其他模块使用。在日常的开发过程中我们经常会遇到一些处理时间格式的问题,下面我们来自定义一个处理时间的模......
  • 自定义的Qt给统计图添加颜色样例控件
    本文主要是给博文“自定义的Qt折线图控件”的图表添加颜色样例。之所以分开叙述是因为本文也是自定义控件,它不仅可以给折线图添加,还可以给其他类型的图表(柱状图、饼形图等,......
  • nuxtjs3 学习踩坑1 自定义路由的配置
    刚安装的nuxt框架搭配vue3使用路由的时候除了按照约定的规则配置路由以外,还可以使用基于vue-router写法的路由文件去做配置,需要如图所示的位置编写文件:其中这样的路由要......