fixture返回值都是默認None,咱們能夠選擇讓fixture返回咱們須要的東西。若是你的fixture須要配置一些數據,讀個文件,或者鏈接一個數據庫,那麼你能夠讓fixture返回這些數據或資源。html
fixture還能夠帶參數,能夠把參數賦值給params,默認是None。對於param裏面的每一個值,fixture都會去調用執行一次,就像執行for循環同樣把params裏的值遍歷一次,這個功能能夠作數據驅動和工廠函數.python
import pytest @pytest.fixture(params=[1, 2]) def data(request): """ :param request:<class '_pytest.fixtures.SubRequest'> """ return request.param def test_data(data): print(f"data:{data}") assert 1 == data
結果:數據庫
╰ pytest -v -s ./test_data.py ================= test session starts ================= platform darwin -- Python 3.7.4, pytest-4.4.0, py-1.8.0, pluggy-0.13.0 -- /Users/zhouwanghua/Code/Leyan/python/robocop/bin/python cachedir: .pytest_cache metadata: {'Python': '3.7.4', 'Platform': 'Darwin-18.6.0-x86_64-i386-64bit', 'Packages': {'pytest': '4.4.0', 'py': '1.8.0', 'pluggy': '0.13.0'}, 'Plugins': {'bdd': '3.1.0', 'html': '1.20.0', 'metadata': '1.8.0'}} rootdir: /Users/zhouwanghua/Code/Leyan/robocop, inifile: pytest.ini plugins: bdd-3.1.0, html-1.20.0, metadata-1.8.0 collected 2 items test_data.py::test_data[1] data:1 PASSED test_data.py::test_data[2] data:2 FAILED =================FAILURES ================= _____________________test_data[2] _____________________ data = 2 def test_data(data): print(f"data:{data}") > assert 1 == data E assert 1 == 2 E -1 E +2 test_data.py:14: AssertionError ================= 1 failed, 1 passed in 0.05 seconds =================