介绍

在测试当中,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更详细解刨见

原文地址:http://www.cnblogs.com/py-zhq/p/16885344.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性