为 py.test fixture 函数提供默认参数值

Provide default argument value for py.test fixture function

有没有更好的方法为参数 pytest.fixture 函数提供默认值?

我有几个测试用例需要 运行 fixture_func 在测试用例之前,如果提供了 none 个,我想在夹具中使用默认值作为参数。我能想出的唯一代码如下。我有更好的方法吗?

@pytest.fixture(scope="function")
def fixture_func(self, request):
    argA = request.param['argA'] if request.param.get('argA', None) else 'default value for argA'
    argB = request.param['argB'] if request.param.get('argB', None) else 'default value for argB'
    # do something with fixture

@pytest.mark.parametrize('fixture_func', [dict(argA='argA')], indirect=['fixture_func'])
def test_case_1(self, fixture_func):
    #do something under testcase
    pass

@pytest.mark.parametrize('fixture_func', [dict()], indirect=['fixture_func'])
def test_case_2(self, fixture_func):
    #do something under testcase
    pass

我想用作

def test_case_3(self, fixture_func):
    #do something under testcase
    pass

None是默认结果

request.param.get('argA', None) 

因此,您可以:

argA = request.param.get('argA', 'default value for argA')

将参数添加到您的灯具:

@pytest.fixture(scope='function', params=[{'arg1': 'default'}, {'arg2': 'default'}])
def my_fixture(request):
    return request.param['arg1'] + request.param['arg1']