1. 程式人生 > 實用技巧 >pytest入門到放棄10--parametrize之indirect引數

pytest入門到放棄10--parametrize之indirect引數

本篇部落格比較下 parametrize 中 引數為 True 和 False 時,不同 的表現。

# File  : test_demo_11.py
# IDE   : PyCharm

import pytest

@pytest.fixture(params=['a', 'b', 'c'])
def fixture_and_paramterize(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_paramterize(fixture_and_paramterize): print('indirect=False,引數為{}'.format(fixture_and_paramterize)) # indirect=False @pytest.mark.parametrize('fixture_and_paramterize', ['d', 'e', 'f'], indirect=True) def test_fixture_and_paramterize_2(fixture_and_paramterize): print(
'indirect=True,引數為{}'.format(fixture_and_paramterize))

執行程式碼:

當 indirect=True 時,argnames 引數被當成函式執行,且 argvalues 值被當成函式中的引數傳參

當 indirect=True 時,argnames 引數被當成普通變數

E:\personal\python38\python.exe E:/personal/GitWorkSpace/pytest_basic/main.py
test_demo_11.py::test_fixture_and_paramterize[d]
test_demo_11.py::test_fixture_and_paramterize[e]
test_demo_11.py::test_fixture_and_paramterize[f]
test_demo_11.py::test_fixture_and_paramterize_2[d]
test_demo_11.py::test_fixture_and_paramterize_2[e]
test_demo_11.py::test_fixture_and_paramterize_2[f]
indirect
=False,引數為d .indirect=False,引數為e .indirect=False,引數為f . 執行fixture函式,執行後引數為d indirect=True,引數為d . 執行fixture函式,執行後引數為e indirect=True,引數為e . 執行fixture函式,執行後引數為f indirect=True,引數為f . 6 passed in 0.03s Process finished with exit code 0