是否可以扩展py.test fixture中使用的参数?
例如,我将使用此代码生成一个简单的fixture来返回字母 a
, b
和 c
.
@pytest.fixture(params=['a', 'b', 'c'])
def first_three_letters(self, request):
return request.param
但是,如果我想扩展另外三个字母 - 即 d
, e
和 f
- 我正在创建一个全新的夹具
@pytest.fixture(params=['a', 'b', 'c', 'd', 'e', 'f'])
def first_six_letters(self, request):
return request.param
这感觉它不符合DRY原则 . 有没有办法以可扩展的方式使用py.test灯具?
我可以直接在测试中使用参数,但是对于两个灯具都有很多测试,所以会有很多重复的行包含 @pytest.mark.parametrize
,因此感觉更少DRY .
1 回答
简答
还没 .
答案很长
如果参数列表总是静态的,它们可以组成常量并作为参数传递:
但是,如果在调用
pytest.fixture()
之前不知道参数,则没有简单的解决方案 . 然而,一个there is a proposal允许一个夹具"yield from"其他固定装置 . 这是它的样子: