Pytest学习笔记(4)-Fixture装置

Fixture装置

前言

传统的前后置处理方法,对处理前后置的场景是有一定的局限性。所以才引入fixture装饰器函数,fixture是pytest的核心功能,也是亮点功能,它可以灵活的处理很多特殊的场景

fixture用途

  • 用于执行测试前后的初始化操作,比如打开浏览器、准备测试数据、清除之前的测试数据等等
  • 用于测试用例的前置条件,比如UI自动化的登录操作,读取config参数等
  • 用于测试用例之间的参数和数据传递

fixture优势

firture相对于unittest中的setup和teardown来说应该有以下几点优势

  • 命名方式更加的灵活,不局限于setup和teardown
  • conftest.py 配置里可以实现数据共享,不需要import就能自动找到一些配置
  • scope=“module” 可以实现多个.py跨文件共享前置, 每一个.py文件只需调用一次
  • scope=“session” 以实现多个.py跨文件使用一个session来完成多个用例

fixture语法

fixture(callable_or_scope=None, *args, scope="function", params=None, autouse=False, ids=None, name=None)
  • scope:fixture的作用域,默认为function
  • autouse:默认为False,表示需要用例手动调用该fixture;当为True时,表示所有作用域内的测试用例都会自动调用该fixture
  • name:装饰器的名称,同一模块的fixture相互调用建议使用不同的name

fixture定义

fixture通过@pytest.fixture()装饰器装饰一个函数,这个函数就是一个fixture,实例如下:

# test_fixture.py
import pytest

@pytest.fixture()
def fixtureDemo():
    return "一个fixture"

def test_fixture(fixtureDemo):
    print("测试用例执行时调用了{}".format(fixtureDemo))

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

执行结果如下:

image-20210622175407924

fixture调用

调用fixture有三种方式

  • fixture名字作为用例函数的参数
  • 使用@pytest.mark.usefixtures(‘fixture名称’)装饰器
  • 定义fixture时使用autouse参数

fixture作为函数的入参调用

将fixture函数名作为参数传入测试用例,如果fixture有返回值,那么测试用例将会接收返回值,举个🌰:

import pytest

@pytest.fixture()
def fixtureDemo():
    return '打开浏览器'

def test_fixture(fixtureDemo):
    print('执行测试用例的时候,先{}'.format(fixtureDemo))

class TestFixture(object):
    
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值