zoukankan      html  css  js  c++  java
  • 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值。

  • 相关阅读:
    [BZOJ 2457] 双端队列 (思维)
    字符串划分 [Bitset 字符串Dp]
    POJ2947 Widget Factory [高斯消元]
    数字串 [分治+哈希+扩展KMP]
    POJ3590 The shuffle Problem [置换+dp]
    P1970 花匠 [权值线段树优化dp, NOIp2003, Y]
    UVA306 Cipher[循环节]
    POJ3270 Cow Sorting [置换]
    POJ 3128 Leonardo's Notebook[置换群幂相关]
    VMware 11 设置U盘启动,总是找不到physicalDrive1
  • 原文地址:https://www.cnblogs.com/moonpool/p/11351859.html
Copyright © 2011-2022 走看看