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
    喜时之言,多失信;怒时之言,多失体
  • 相关阅读:
    SQL中distinct的用法
    python requests 高级用法 -- 包括SSL 证书错误的解决方案
    odoo js
    线程池的理解及使用
    单点登录原理及简单实现
    如何重写hashCode()和equals()方法
    多线程中的Lock小结
    Sql语句的优化摘要
    Spring事务管理
    并发编程之原子性、可见性、有序性的简单理解
  • 原文地址:https://www.cnblogs.com/xiaohuboke/p/13533083.html
Copyright © 2011-2022 走看看