zoukankan      html  css  js  c++  java
  • pytest框架之@pytest.fixture()详细使用

    一、简介

      1.1、有独立的命名,并通过声明它们从测试函数、模块、类或整个项目中的使用来激活;

      1.2、按模块化的方式实现,每个fixture都可以互相调用;

      1.3、fixture的范围从简单的单元测试到复杂的功能测试,可以对fixture配置参数,或者跨函数function,类class,模块module或整个测试session范围。

    二、用途

      2.1、做测试前后的初始化设置,如测试数据准备,链接数据库,打开浏览器等这些操作都可以使用fixture来实现;

      2.2、测试用例的前置条件可以使用fixture实现;

           2.3、支持经典的xunit fixture ,像unittest使用的setup和teardown;

           2.4、可以实现unittest不能实现的功能,比如unittest中的测试用例和测试用例之间是无法传递参数和数据的,但是fixture却可以解决这个问题。

    三、fixture可以当做参数传入

      3.1、定义fixture跟定义普通函数差不多,唯一区别就是在函数上加个装饰器@pytest.fixture(),fixture命名不要用test_开头,跟用例区分开。用例才是test_开头的命名;

      3.2、fixture是可以有返回值的,如果没return默认返回None。用例调用fixture的返回值,直接就是把fixture的函数名称当成变量传入;

           3.3、fixture装饰器里的scope有四个级别的参数。function(不写默认这个)、class、module、session;

           3.4、除scope之外。还有params、autouse、ids、name等;

      3.5、fixture可以返回一个元组、列表或字典;

      3.6、test_用例可传单个、多个fixture参数;

           3.7、fixture与fixture间可相互调用。

    四、fixture源码详解

      4.1、fixture(scope='function',params=None,autouse=False,ids=None,name=None):

                                scope:参数可以控制fixture的作用范围,scope:function(不写默认这个)、class、module、session

                                params:一个可选的参数列表,它将导致多个参数调用fixture功能和所有测试使用它

                                autouse:如果True,则为所有测试激活fixture func可以看到它。如果为False则显示需要参考来激活fixture

                                ids:每个字符串id的列表,每个字符串对应于params这样他们就是测试ID的一部分。如果没有提供ID它们将从params自动生成

                                name:fixture的名称。这默认为装饰函数的名称。如果fixture在定义它的统一模块中使用,夹具的功能名称将被请求夹具的功能arg遮蔽,解决这个问题的一种方法时将装饰函数命令"fixture_<fixturename>"然后使

                                            用"@pytest.fixture(name='<fixturename>')"。

          4.2、fixture里面有个scope参数可以控制fixture的作用范围:session>module>class>function

                           function:每一个函数或方法都会调用

                           class:每一个类调用一次,一个类中可以有多个方法

                           module:每一个.py文件调用一次,该文件内又有多个function和class

                           session:是多个文件调用一次,可以跨.py文件调用,每个.py文件就是module





  • 相关阅读:
    HDU 4782 Beautiful Soup (模拟+注意细节)
    Linux 简单socket实现UDP通信
    Linux 简单socket实现TCP通信
    HDU 1698 Just a Hook(线段树区间覆盖)
    HDU 1271 整数对(思路题)
    HDU 2222 Keywords Search (AC自动机模板题)
    Windows平台使用Gitblit搭建Git服务器图文教程
    Git克隆
    移动端布局,div按比例布局,宽度为百分比,高度和宽度一样,即让div为正方形
    calc()问题
  • 原文地址:https://www.cnblogs.com/hecity/p/15206899.html
Copyright © 2011-2022 走看看