• 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值。

  • 相关阅读:
    16.10.16学到的JAVA知识
    参数类型转换求和(JAVA)
    大道至简第一篇读后感之愚公移山(伪代码)
    First
    18.10.22 luoguP3374 【模板】树状数组 1
    18.10.16 luoguP3372 线段树模板-区间更新值&求和(POJ3468 A Simple Problem with Integers)
    18.10.16 POJ 2528 Mayor's posters(线段树+离散化)
    18.10.15 POJ 2182 Lost Cows(线段树)
    18.10.10 数算作业-字符串
    18.10.9 不好做的最长上升子序列(nlogn树状数组解LIS)
  • 原文地址:https://www.cnblogs.com/moonpool/p/11351859.html
Copyright © 2020-2023  润新知