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('\n执行参数{}'.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('\n执行参数{}'.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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM