在pytest中,可以通过使用request
对象来获取参数化测试节点ids的列表。request
对象是一个内置的fixture,可以在测试函数中直接使用。
首先,在fixture中定义参数化测试节点的ids列表,可以使用pytest.fixture
装饰器来创建fixture,并在参数化的pytest.mark.parametrize
装饰器中指定ids参数。例如:
import pytest
@pytest.fixture(params=[(1, 2), (3, 4)], ids=['test1', 'test2'])
def my_fixture(request):
return request.param
def test_my_fixture(my_fixture):
assert sum(my_fixture) == 3
在上述示例中,my_fixture
是一个参数化的fixture,它有两个参数化的值(1, 2)
和(3, 4)
,对应的ids分别是'test1'
和'test2'
。
然后,在测试函数中可以通过request.node.iter_markers('parametrize')
方法来获取参数化测试节点的ids列表。例如:
def test_get_parametrize_ids(request):
parametrize_markers = request.node.iter_markers('parametrize')
ids_list = [marker.args[2] for marker in parametrize_markers]
assert ids_list == ['test1', 'test2']
在上述示例中,test_get_parametrize_ids
函数通过request.node.iter_markers('parametrize')
方法获取所有参数化的marker对象,然后通过遍历marker对象的args属性来获取ids列表。
综上所述,可以通过使用request.node.iter_markers('parametrize')
方法从fixture中获取参数化测试节点ids的列表。
腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云