测试之路 pytest接口自动化框架-fixture与conftest

哈喽,大家好,我是小王~本期内容说说pytest中的工厂函数。说完本期内容,pytest基础使用就告一段落。下期就开始围绕封装思想展开细说。好了,废话少说,开整。

01 前言





上期内容说到了pytest装饰器中的跳过、预期失败、以及数据参数化;还有分布式执行的内容。其中数据参数化,更是在日常工作中,必用到的一个点。

那么本期内容,就来说pytest比较有意思的一个函数。工厂函数。也可以叫它夹具--fixture函数

fixture函数的效果与setup、teardown效果类似。setup、teardown应用于在模块内部。可以是类、可以是方法。但是不能跨模块使用。fixture则可以应用于每个模块中。

02 fixture





使用方式:

fixture是通过pytest中的pytest.fixture()装饰器来标记工厂函数。在函数中,用yield来标记前置处理与后置处理,yield前的代码表示前置处理,yield后的代码表示后置处理。

import pytest
class TestFixture:
    @pytest.fixture()
    def be(self):
        print('be') 
        # 如果需要使用后置方法。需要增加一个yield关键字。而后在关键字后面写入后置代码
        # 效果类似teardown
        yield
        print('退出')   
    # 方法1方法名的括号中。添加上工厂函数名即可
    def test_login(self, be):
        print('login1')
    # 方法2 @pytest.mark.usefixtures('工厂函数名')
    @pytest.mark.usefixtures('be')
    def test_login2(self):
        print('login2')


参数说明:

scope:标记fixture的作用域

  • function:在函数或方法运行时执行fixture函数的功能 默认作用域

  • class:在类运行时调用一次。

  • module:在一个模块(一个py文件为一个模块)被运行时,执行一次fixture

  • package:当前被使用fixture的文件所在的包,执行一次fixture

  • session:当前被使用fixture的文件所在的整个项目目录,执行一次fixture

ids:当使用参数化时,给每一个参数的值一个变量名(用处不大)

params:一个可选的参数列表,它将导致对夹具函数和所有使用它的测试的多次调用。使用参数是

特别说明:ids与params结合使用。

53a60e36d63e66193a744de939668be3.png

name:给fixture函数起一个别名

autouse:自动执行工厂函数 。默认false

  •  在修饰工厂函数时,将autouse参数设置为True;@pytest.fixture(autouse = True)

作用域:

  • 在修饰工厂函数时,添加参数scope;@pytest.fixture(autouse = True,scope = ‘class’)

    • scope = ‘class’ 为类函数

    • 需要指定某一个类使用工厂函数的话。就可以使用usefixtures的装饰器装饰该类

@pytest.mark.usefixtures('fixure')
class Test2():
    def test01(self, fixure):
        print('第二个类中的函数')

03 conftest.py





conftest.py是夹具的文件。可以将所有夹具方法,写入这个文件中。当fixture放在这个文件中后,结合fixture装饰器中的scope参数,可以明确夹具执行的时机以及覆盖的作用域。

conftest.py也有他自己的作用域。如果是根目录。则作用域是属于根目录的。如果是模块内。那作用域就在模块内。

结合这个特性。可以根据不同的业务场景。定制属于自己的夹具方法。

04 实际应用





应用场景1:清理日志,默认保留30天。在每次脚本运行前检查日志。超过30天的文件清空。

应用场景2:在某条业务线中,每个接口都需要登录才能进行后续验证。在该业务线的模块下,定义夹具,调用login接口。生成所用的数据并存入临时文件中,以便后续方法调用。

如上两个场景是小王在近期工作中应用到夹具的场景。还是非常好用的

05 结语


好了。本期内容到这里了。大佬们下期见~小王先退下了ed87bc4070e25fb25085a9c2f2be4163.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值