python - 如何为带有参数的单个参数化 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"
上述方法可行,但是只有一个夹具定义处理两个用例会更简洁。我该怎么做呢?
解决方案
推荐阅读
- java - 在 IBM Rational Software Architect for Java6 Maven 安装中收到致命警报:protocol_version 到 https://repo.maven.apache.org/maven2/
- c# - 如果在一个表单中更改,则更新每个表单上的值
- javascript - Nodejs 并使用 moongose 改进搜索
- vb6 - 在 Visual Basic 6 中绕过 64k 限制
- extendscript - 在extendscript中移动关键帧时间
- assembly - NASM 中 .data 部分中的变量对齐
- javascript - JS函数无缘无故停在100
- artifactory - 如何使用 Artifactory 的 Java 客户端获取文件夹中的文件列表
- reactjs - react + redux + normalizer:如何发送条件非规范化数据?
- postgresql - 使用 ssh psql 命令发生意外错误