固件的名称默认为定义时的函数名,如果不想使用默认,可以通过 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] 举报,一经查实,本站将立刻删除。