pytest系列——fixture函数使用(pytest测试框架测试固件)

setup和teardown能实现在测试用例执行之前或之后做一些操作,但是这种是整个测试脚本全局生效的;如果我们想实现某些用例执行之前进行登录,某些用例执行之前不需要进行登录,这种场景我们再使用setup和teardown就无法实现了,这时候我们就需要用到fixture功能了。
摘要由CSDN通过智能技术生成

前言

setup和teardown能实现在测试用例执行之前或之后做一些操作,但是这种是整个测试脚本全局生效的;

如果我们想实现某些用例执行之前进行登录,某些用例执行之前不需要进行登录,这种场景我们再使用setup和teardown就无法实现了,这时候我们就需要用到fixture功能了。

fixture函数

fixture(scope="function", params=None, autouse=False, ids=None, name=None)

参数说明:

1、scope:fixture函数的作用域;可选值:function(默认)、class、module、session

  • function:作用于每个方法或函数,每个方法或函数都运行一次
  • class:作用于整个class类,每个class中的所有test只运行一次
  • module:作用于整个模块,每个module中的所有test只运行一次
  • session:作用于整个session,整个session只运行一次(慎用)

2、params:列表类型;一个可选的参数列表;它将会多次调用被fixture标记的方法和所有用到这个fixture的test测试用例;默认为None;当前调用参数可以用 request.param 来获取。

3、autouse:如果为True,则为所有测试用例激活fixture,运行测试用例的时候会自动运行被fixture标记的方法;如果为False,则需要显示指定来激活fixture,不会自动运行。

4、ids:id字符串列表,与params相对应,因此它们也是测试的一部分。如果没有提供ids,那么将会从params来自动生成。

5、name:fixture的名称。默认为被fixture装饰器标记的函数名。

fixture的使用

1、通过参数引用fixture函数

举例:

# file_name:test_fixture.py


import pytest


class Test_A:

    @pytest.fixture()
    def before(self):
        print("\n--------before fixture has ran--------")

    def test_a(self, before):    # test_a方法以参数的形式传入了被fixture标记的函数,fixture的名称默认为被fixture标记的函数名
        print('-------test_a has ran-------')
        assert 1


if __name__ == '__main__':
    pytest.main(['-s', 'test_fixture.py'])

运行结果:

从结果中可以看到被fixture标记的函数before会优先于测试用例test_a运行。

2、通过使用name参数来引用fixture函数

①name参数表示fixture的重命名;

②通常来说使用 fixture 的测试函数会将 fixture 的函数名作为参数传递,但是 pytest 也允许将fixture重命名。

举例1:

# file_name:test_fixture.py


import pytest


class Test_A:

    @pytest.fixture(name="before_fixture_name")
    def before(self):
        print("\n--------before fixture has ran--------")

    def test_a(self, before_fixture_name):    # test_a方法以参数的形式传入了被fixture标记的函数,这里的fixture名称为:before_fixture_na
  • 5
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值