Pytest 之 fixture

fixture作为参数传入

定义fixture跟定义普通函数唯一区别就是在函数上加个装饰器**@pytest.fixture()**,fixture命名不要用test开头,跟用例区分开,用例才是以test开头的命名;

fixture是可以有返回值的,如果没有 return 默认返回None。用例调用 fixture 的返回值,直接就是把 fixture 的函数名称当成变量名称,多说无益,看示例:

代码示例:

# test_fixture.py
from operator import add

import pytest

@pytest.fixture()
def myfixture():

    s = add(1,2)
    print("这里是myfixture")
    return s


def test_one(myfixture):

    print("这里是test_one")
    # assert myfixture == 2
    assert myfixture == 3

运行pytest test_fixture.py -s,结果如下,可以看到,直接使用函数名 myfixture 做为变量和 3进行比较
图示
上述代码修改 assert myfixture == 3assert myfixture == 2,运行结果如下:
图示

多个fixture使用

定义两个fixture;在第一个测试方法中传入第一个,在第二个测试方法中传入第二个,在第三个测试方法中两个都传入

代码示例
# test_fixture.py
from operator import add

import pytest

@pytest.fixture()
def myfixture1():

    s = add(1,2)
    print("这里是myfixture11111")
    return s

@pytest.fixture()
def myfixture2():

    L = [1, 2, 3]
    print("这里是myfixture2222")
    return L

def test_one(myfixture1):

    print("这里是test_one")
    # assert myfixture == 2
    assert myfixture1 == 3

def test_two(myfixture2):

    print("这里是test_two")
    assert myfixture2 == ['a', '2', '3']

def test_three(myfixture1, myfixture2):
    print("这里是test_three")
    assert myfixture1 == myfixture2

运行pytest test_fixture.py -s,结果如下:

图示

fixture 互相调用

代码示例:

# test_fixture.py
from operator import add

import pytest

@pytest.fixture()
def myfixture1():

    s = add(1,2)
    print("这里是myfixture11111")
    return s

@pytest.fixture()
def myfixture2():

    L = [1, 2, 3]
    print("这里是myfixture2222")
    return L

def test_one(myfixture2):

    print("这里是test_one")
    assert myfixture2 == [1, 2, 3]

def test_two(myfixture1):

    print("这里是test_two")
    assert myfixture1 == 3

def test_three(myfixture1, myfixture2):
    print("这里是test_three")
    assert myfixture1 == myfixture2

运行pytest test_fixture.py -s,结果如下:
图示

fixture 参数之 name

fixture 里面使的 name 参数,意如其名,就是给 fixture 起一个有意思的别名,使用的时候就不需要传函数名,直接使用自定义的别名即可

代码示例
# test_fixture.py
import pytest

@pytest.fixture(name='newname')
def name_fixture():
    s = "a"
    print("我有一个新名字是 newname 吖")
    return s

def test_nameOfFixture(newname):

    assert newname == 666

如上代码所示,在测试方法里我们传入的参数为别名“newname",比往常传入 ”name_fixture“ 是不是好理解一些~,运行pytest test_fixture.py -s,结果如下:
图示

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值