Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在pytest.mark.parametize内使用夹具_Python_Python 2.7_Testing_Pytest - Fatal编程技术网

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-如果我理解正确,这需要我修改运行测试的注释。有没有办法通过代码来实现?