如何为带参数的单个参数化 pytest 夹具提供默认值?

时间:2021-03-11 23:24:46

标签: python python-3.x pytest

我正在使用 pytest 参数化装置,它具有可变的返回值。

这是一个简化的例子:

import pytest


@pytest.fixture
def mocked_value(mock_param):
    if mock_param:
        mocked_value =  "true"
    else:
        mocked_value = "false"
    yield mocked_value


@pytest.mark.parametrize(("mock_param"), [True, False])
def test_both_mocked_parameters(mocked_value, mock_param):
    assert mocked_value == str(mock_param).lower()


@pytest.mark.parametrize(("mock_param"), [True])
def test_just_one_mocked_param(mocked_value, mock_param):
    assert mocked_value == "true"

有没有办法让 pytest 固定装置有一个默认参数?像这样的东西,除了内置在单个夹具定义中:

def _mocked_function(mock_param):
    if mock_param:
        mocked_value =  "true"
    else:
        mocked_value = "false"
    return mocked_value

@pytest.fixture
def mocked_value_with_default():
    yield _mocked_function(True)

@pytest.fixture
def mocked_value(mock_param):
    yield _mocked_function(mock_param)


@pytest.mark.parametrize(("mock_param"), [True, False])
def test_both_mocked_parameters(mocked_value, mock_param):
    assert mocked_value == str(mock_param).lower()


def test_just_one_mocked_param(mocked_value_with_default):
    assert mocked_value_with_default == "true"

上述工作,但是如果只有一个夹具定义处理两个用例会更清晰。我该怎么做?

0 个答案:

没有答案
相关问题