微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Pytest Fixture三

 

重命名

固件的名称认为定义时的函数名,如果不想使用认,可以通过 name 选项指定名称

 

import pytest


@pytest.fixture(name='lowen')
def calculate_average():
    return 28


def test_age(lowen):
    assert lowen == 28

 

执行结果

 

固件参数化

        在之前我们介绍了参数化,固件也是函数,我们也可以对固件进行参数化,

        假设现在有一批 API 需要测试对不同数据库支持情况(对所有数据库进行相同操作),最简单的方法就是针对每个数据库编写一个测试用例,但这包含大量重复代码,如数据库的连接、关闭查询等。

        使用固件抽离出数据库的通用操作,每个 API 都能复用这些数据库固件,同时可维护性也得到提升。

 

import pytest


@pytest.fixture(params=[
    ('redis', '6379'),
    ('elasticsearch', '9200')
])
def param(request):
    print(request.param)
    return request.param


@pytest.fixture(autouse=True)
def db(param):
    print('\nSucceed to connect %s:%s' % param)
    yield
    print('\nSucceed to close %s:%s' % param)


def test_api():
    assert 1 == 1

 

执行结果

 

函数参数化使用 @pytest.mark.parametrize 不同,固件在定义时使用 params 参数进行参数化。

    固件参数化依赖于内置固件 request 及其属性 param。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐