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
相关产品推荐
相关产品推荐

