1. 程式人生 > 其它 >015、pytest 兩種方式引數化、 pytest.fixture(params=) 和 pytest.mark.parametrize

015、pytest 兩種方式引數化、 pytest.fixture(params=) 和 pytest.mark.parametrize

1、pytest 兩種方式引數化

  a、使用 pytest.mark.parametrize 引數化

   注意兩個 user_info 必須保持一樣,parametrize括號裡面的user_info 必須加引號;

  b、使用 pytest.fixture(params=data) + request 引數化

  示例程式碼如下:

# pytest 兩種方式引數化
data = [
    {'name': 'Tony', 'pwd': '456'},
    {'name': 'jack', 'pwd': '789'}
]


# 一:使用 pytest.mark.parametrize 引數化
# 注意兩個 user_info 必須保持一樣,parametrize括號裡面的user_info 必須加引號; @pytest.mark.parametrize('user_info', data) def test_login(user_info): print(f"\n======={user_info['name']}") print(f"\n*******{user_info['pwd']}") # 二:使用 pytest.fixture(params=data) + request 引數化 @pytest.fixture(params=data) def login_1(request): user_info
= request.param return user_info def test_login_1(login_1): print(f"\n======={login_1['name']}") print(f"\n*******{login_1['pwd']}")
View Code

  執行結果如下:

D:\SkyWorkSpace\WorkSpace\Pytest\Temp\day11\venv\Scripts\python.exe "C:\SkyWorkSpace\WorkTools\PyCharm\PyCharm_Community_Edition_202003\PyCharm Community Edition 2020.3\plugins\python-ce\helpers\pycharm\_jb_pytest_runner.py
" --target test_ee.py::test_login Testing started at 14:45 ... Launching pytest with arguments test_ee.py::test_login in D:\SkyWorkSpace\WorkSpace\Pytest\Temp\day11\ee ============================= test session starts ============================= platform win32 -- Python 3.8.6, pytest-6.2.4, py-1.10.0, pluggy-0.13.1 -- D:\SkyWorkSpace\WorkSpace\Pytest\Temp\day11\venv\Scripts\python.exe cachedir: .pytest_cache rootdir: D:\SkyWorkSpace\WorkSpace\Pytest\Temp\day11\ee collecting ... collected 2 items test_ee.py::test_login[user_info0] PASSED [ 50%] =======Tony *******456 test_ee.py::test_login[user_info1] PASSED [100%] =======jack *******789 ============================== 2 passed in 0.02s ============================== Process finished with exit code 0
View Code