zoukankan      html  css  js  c++  java
  • 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
    喜时之言,多失信;怒时之言,多失体
  • 相关阅读:
    html 入门 "地表最强"干货 你值得拥有
    python信号量
    死锁 与 递归锁
    互斥锁
    进程之间的通讯
    进程与多道技术
    进程对象常用属性
    开启子进程的方式2
    牛客多校赛2K Keyboard Free
    省选刷题小记 (06~10)
  • 原文地址:https://www.cnblogs.com/xiaohuboke/p/13533083.html
Copyright © 2011-2022 走看看