我正在使用 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"
上述工作,但是如果只有一个夹具定义处理两个用例会更清晰。我该怎么做?