Python 在pytest.mark.parametize内使用夹具
假设我有一个测试函数,它将参数化Python 在pytest.mark.parametize内使用夹具,python,python-2.7,testing,pytest,Python,Python 2.7,Testing,Pytest,假设我有一个测试函数,它将参数化记录作为dict,其中一个值是已经定义的fixture 例如,我们有一个固定装置: @pytest.fixture def a_value(): return "some_value" 以及测试功能: @pytest.mark.parametrize("record", [{"a": a_value, "other": "other_value"}, {"a": a_value, "
记录
作为dict,其中一个值是已经定义的fixture
例如,我们有一个固定装置:
@pytest.fixture
def a_value():
return "some_value"
以及测试功能:
@pytest.mark.parametrize("record", [{"a": a_value, "other": "other_value"},
{"a": a_value, "another": "another_value"}])
def test_record(record):
do_something(record)
现在,我知道这可以通过将夹具传递给测试函数并相应地更新记录来解决,如:
@pytest.mark.parametrize("record", [{"other": "other_value"},
{"another": "another_value"}])
def test_record(a_value, record):
record["a"] = a_value
do_something(record)
但是我想知道,如果没有这个“变通方法”,是否有办法做到这一点,因为我有许多已经定义的装置,我只想在传递给函数的每个参数化记录中使用它们
我已经检查过了,虽然它似乎不完全适合我的情况。从那里的答案中找不到正确的用法。一种解决方案是创建
记录
作为固定装置,而不是使用参数化
并接受a_值
作为参数:
@pytest.fixture
def record(a_value):
return {
'a': a_value,
'other': 'other_value',
}
谢谢但是,如何在不同的
记录上参数化?我已经对我的问题进行了编辑,使记录
参数有几个不同的值。@A.Sarid在您的示例中,记录只有两个字段。实际上,记录真正有多少个字段?各不相同,这就是使用参数化的全部原因,有些字段有2个,有些字段有更多的键值对。尽管在我的示例中,所有记录都将包括一个fixture,例如a_值
。@a.Sarid我从一个比我更了解pytest的人那里得到了提示,建议metafunc.parametrize
:相关:谢谢@wim-如果我理解正确,这需要我修改运行测试的注释。有没有办法通过代码来实现?