自动化测试学习Day4-@pytest.fixture()入门及应用

一、fixture简介

        fixture用来完成那些需要多次重复执行的用例,比如需要先退出,再更换其他用户登录。我们可以把用于退出和登录的用例的函数比如叫做A函数,在A函数的前面加上@pytest.fixture()装饰器,这样,这个A函数就可以被其他函数直接调用了,只要其他用例函数在执行前需要有先进行退出再更换其他用户登录的操作,都可以直接调A函数。类似unittest中setup/teardown这种前后置。

fixture可以通过设置 scope 参数来控制其作用域。fixture提供四种作用范围: function、class、module、session,session>module>class>function。

函数function:每个方法(函数)都会执行一次;
类class:每个类都会执行一次。类中有多个方法调用,都可以共享这个 fixture。(看到有说只在第一个方法调用时执行?需研究,标记一下)
模块module:一个 .py 文件执行一次。一个.py 文件可能包含多个class和function;
会话package/session:多个文件调用一次,可以跨 .py 文件。一次 pytest 会话中的所有测试函数、方法都可以共享这个 fixture

@pytest.fixture()如果不写参数,参数就是scope="function",它的作用范围是每个测试用例来之前运行一次,销毁代码在测试用例之后运行。

二、fixture用途:
1.测试前后的初始化设置,如测试数据准备,链接数据库,打开浏览器等这些操作都可以使用fixture来实现
2.测试用例的前置条件可以使用fixture实现
3.支持经典的xunit fixture ,像unittest使用的setup和teardown
4.fixture可以实现unittest不能实现的功能,比如unittest中的测试用例和测试用例之间是无法传递参数和数据的,但是fixture却可以解决这个问题

三、fixture实践

先需要下载fixture包
将需要引用的函数在def之前加个装饰器@pytest.fixture(),可以将这整个视为函数,注意fixture下命名不要用test_开头,跟用例区分开。用例才是test_开头的命名。

1.@pytest.fixture(),每个调用fixture的函数都会执行一次

输入:

import pytest
@pytest.fixture()
def func():
    x=4
    print("我是fixture函数,快来引用~~")
    return x + 1  #fixture函数

def test_oss(func):
    print('我不是类,结果为:%d'%(func))
class Test_001:
    def test_answer(self,func):   #引用fiture函数
        print('引用fixture函数成功,结果为:%d'%(func))
        assert func == 5
    def test1(self,func):
        print('test_2引用fixture函数成功,结果为:%d'%(func))
    def test_haha(self):
     print('我是测试用例haha')
if __name__=='__main__':
    pytest.main(['-v','-s','test_study.py'])

运行结果:

2.@pytest.fixture(scope='class'),测试类内的每一个测试方法都调用了fixture,fixture只在该class下所有测试用例执行前执行一次

将以上代码@pytest.fixture()更换成@pytest.fixture(scope='class')

运行结果:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值