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

  • 相关阅读:
    对javascript的一点点认识总结——《javascript高级程序设计》读书笔记
    .Net Garbage Collection学习心得
    上网本重装系统的历程
    让验证控件进行分组验证
    .net应用程序分层的个人认识
    asp.net 4.0的变化(官网链接地址)
    SQL 延时 插入 修改 删除
    SQL 删除前100条 with as
    jQuery RadioButtonList
    网站推广的100个方法
  • 原文地址:https://www.cnblogs.com/moonpool/p/11351859.html
Copyright © 2011-2022 走看看