pytest-fixture使用

用法:

fixture类似于不同的函数间调用。使用fixture标记的fuction可以被其它函数调用并拿到对应的返回值。

备注:

  • fixture标记的test_case不会被认为是一个case(pytest收集case时不计数),最后未标记的才是
  • 若前序case(fixture标记的内容报错),调用方也会被标记为失败

使用方式:

  • 在方法func1()上标记@pytest.fixture,则func1可以被调用。可以通过func1名称拿到对应方法返回值
使用参考:
import pytest

@pytest.fixture()
def test_a():
    assert 1 == 1
    print('in a')
    return 3


@pytest.fixture()
def test_b(test_a):
    print(test_a)
    print('in b')
    assert test_a in [2, 3]
    return (4, 5, 6)


def test_c(test_b, test_a):
    print(test_b[1])
    print('in c')
    assert test_b[1] in (4, 5, 6, 7)

返回结果:

in a
3
in b
5
in c
.
1 passed in 0.90s

  • fixture使用可以标记使用范围

fixture里面有个scope参数可以控制fixture的作用范围:session>module>class>function

-function:每一个函数或方法都会调用

-class:每一个类调用一次,一个类中可以有多个方法

-module:每一个.py文件调用一次,该文件内又有多个function和class

-session:是多个文件调用一次,可以跨.py文件调用,每个.py文件就是module

使用效果:

@pytest.fixture(scope='module')
def test_a():
    assert 1 == 1
    print('in a')
    return 3

# @pytest.fixture()
def test_b(test_a):
    print(test_a)
    print('in b')
    assert test_a in [2, 3]
    return (4, 5, 6)

def test_c(test_a):
    # print(test_b[1])
    print('in c')
    assert 4 in (4, 5, 6, 7)

返回结果:

in a
3
in b
.in c
.
2 passed in 0.87s

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值