You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyTest:如何在测试函数内部获取参数化参数的键值对字典

实现方法

直接通过request对象的内置属性即可获取,无需自己解析用例名称:

  • 测试函数内部使用:request.node.callspec.params
  • 自定义钩子中使用:只要能拿到测试用例的item对象,直接取item.callspec.params即可

完整示例代码

import pytest

@pytest.fixture
def fixt_y():
    return "fixture_y"

@pytest.fixture
def fixt_z():
    return "fixture_z"

@pytest.mark.parametrize('a', [False, True])
@pytest.mark.parametrize('b', [1, 2])
def test_foo(request, fixt_y, fixt_z, a, b):
    # 直接获取所有参数化参数组成的字典,不会包含fixture参数
    parametrize_params = request.node.callspec.params
    print(parametrize_params)
    # 当用例参数为b=1、a=False时,输出:{'b': 1, 'a': False}

注意事项

如果测试用例没有使用任何@pytest.mark.parametrize标记,callspec属性不会存在,调用前可先加判断避免报错:

if hasattr(request.node, 'callspec'):
    parametrize_params = request.node.callspec.params
else:
    parametrize_params = {}

内容的提问来源于stack exchange,提问作者Viacheslav Kroilov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 21:57:02