• pytest扫盲10--parametrize之indirect参数


    本篇博客比较下 parametrize 中 参数分别为 True 和 False 时的两种情况:

    1) 当 indirect=False 时,argnames 参数被当成普通变量

    import pytest

    @pytest.fixture(params=['a', 'b', 'c'])
    def fixture_and_parametrize(request):
    print(' 执行参数{}'.format(request.param))
    return request.param

    # indirect=False
    @pytest.mark.parametrize('fixture_and_paramterize', ['d', 'e', 'f'], indirect=False)
    def test_fixture_and_parametrize(fixture_and_paramterize):
    print('indirect=False,参数为{}'.format(fixture_and_paramterize))

    if __name__ == '__main__':
    pytest.main(['-s', '-q', 'run.py'])

    执行代码:

    indirect=False,参数为d
    .indirect=False,参数为e
    .indirect=False,参数为f
    .
    3 passed in 0.03s

    2) 当 indirect=True 时,parametrize 中的 argnames 参数被当成函数执行,且 argvalues 值作为 argnames函数中的参数传参。 

    import pytest

    @pytest.fixture(params=['a', 'b', 'c'])
    def fixture_and_parametrize(request):
    print(' 执行参数{}'.format(request.param))
    return request.param

    # indirect=True
    @pytest.mark.parametrize('fixture_and_parametrize', ['d', 'e', 'f'], indirect=True)
    def test_fixture_and_parametrize_2(fixture_and_parametrize):
    print('indirect=True,参数为{}'.format(fixture_and_parametrize))

    if __name__ == '__main__':
    pytest.main(['-s', '-q', 'run.py'])

     执行代码:

    执行参数d
    indirect=True,参数为d
    .
    执行参数e
    indirect=True,参数为e
    .
    执行参数f
    indirect=True,参数为f
    .
    3 passed in 0.03s
    True
    喜时之言,多失信;怒时之言,多失体
  • 相关阅读:
    TD在IE7不能浏览的问题解决办法
    SqlServer中的IsNull
    C#日期加减
    this._form为空或不是对象
    清除自动保存的远程机器登录密码
    解决下载文件名乱码问题的简单方法
    createTextRange选中测试表格
    GridView改变行的颜色(二)
    行列转换(1)
    .NET中调用系统程序
  • 原文地址:https://www.cnblogs.com/xiaohuboke/p/13533083.html
Copyright © 2020-2023  润新知