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