pytest fixture 利用 params参数实现用例集合
@pytest.fixture有一个params参数,接受一个列表,列表中每个数据都可以作为用例的输入。也就说有多少数据,就会形成多少用例。
如下面例子,就形成3条用例
test_parametrizing.py
1 import pytest 2 3 seq=["case1","case2","case3"] 4 5 6 @pytest.fixture(scope="module",params=seq) 7 def params(request): 8 return request.param 9 10 11 12 def test_params(params): 13 print(params) 14 assert "case" in params
执行命令:
pytest -rA test_parametrizing.py
执行结果:
正常情况params参数不能动态取值的,如果需要动态取值,可以采用在params的序列值中放入函数的方法解决
1 import uuid 2 import pytest 3 4 5 6 def duuid(): 7 return str(uuid.uuid4()) 8 9 duuids=[] 10 duuids.append(duuid()) 11 12 @pytest.fixture(scope="function", params=duuids) 13 def gparams(request): 14 p = request.param 15 return p 16 17 18 def guuid(): 19 def _uuid(): 20 return str(uuid.uuid4()) 21 return _uuid 22 23 @pytest.fixture(scope="function", params=[guuid()]) 24 def funcparam(request): 25 p = request.param 26 return p() 27 28 @pytest.fixture(scope="function", params=[guuid(), guuid()]) 29 def funcparams(request): 30 p = request.param 31 return p() 32 33 34 35 36 def test_params1(gparams): 37 print("test_params1:"+gparams) 38 #fb3dc70e-273f-4622-bedb-72b3967e9296 39 40 def test_params1_1(gparams): 41 print("test_params1_1:"+gparams) 42 #fb3dc70e-273f-4622-bedb-72b3967e9296 43 44 def test_params2(funcparam): 45 print("test_params2:"+funcparam) 46 #92bc5bf6-0dbe-44d0-b402-29f57971949e 47 48 def test_params2_2(funcparam): 49 print("test_params2:" + funcparam) 50 #2d42e226-47f1-47d5-9561-557ab2a1115e 51 52 def test_params3(funcparams): 53 print("test_params3:"+funcparams) 54 #05e9e475-fb6e-4a02-8f47-dd14bdea53f4 55 #520bd717-7d95-4281-94f7-d7ba45f88db1
在用例test_params2和test_params2_2的执行结果中可以看到,在scope为function的情况下,两条用例获取到不同的UUID值。
本文来自博客园,作者:月色深潭,交流群:733423266,转载请注明原文链接:https://www.cnblogs.com/moonpool/p/11351859.html