pytest.ini 可以修改?pytest?的默認行為
注意:?pytest.ini?不能使用任何中文符號,包括漢字谤逼、空格辜伟、引號菊霜、冒號等等坚冀;
更改默認命令行參數:
將常用的命令行參數設置為默認,省去重復輸入的工作鉴逞;
# pytest.ini
[pytest]
addopts = -rsxX -l -strict --tb=short
注冊 mark?標記:
# pytest.ini
[pytest]
markers =
? ? demo : marks tests as demo
? ? smoke: marks tests as smoke
? ? test : marks tests as test
控制臺實時輸出日志:
# pytest.ini
[pytest]
log_cli = 1
指定 pytest?最低版本號:
# pytest.ini
[pytest]
minversion = 3.0
指定?pytest 忽略某些目錄:
pytest?收集測試用例時记某,會遞歸遍歷所有子目錄,包括某些你明知道沒必要遍歷的目錄构捡,遇到這種情況液南,可以使用?norecursedirs 參數簡化?pytest?的搜索工作;norecursedirs?默認的設置是:.* build dist CVS _darcs {arch} *.egg 勾徽,多個路徑用空格隔開滑凉。
# pytest.ini
[pytest]
norecursedirs = .* build dist CVS _darcs {arch} *.egg venv src
指定測試目錄:
testpaths 限定測試用例的搜索范圍,只有在?pytest?范圍指定文件目錄參數或測試用例標識符時喘帚,該選項才會啟用畅姊;
testpaths?指定的路徑是以?testpaths?所在的目錄為基準的相對路徑;
# pytest.ini
[pytest]
testpaths = test_path
更改測試用例收集規(guī)則:
pytest?默認的用例收集規(guī)則:
測試模塊必須以?test_?開頭或以 _test?結尾吹由;
測試類必須以 Test?開頭若未,且不能有 __init__() ;
測試方法必須以?test_?開頭倾鲫;
下面我們來添加自己的收集規(guī)則:
添加?check_?開頭的測試模塊粗合;
添加 Check?開頭的測試類;
添加?check_?開頭的測試方法乌昔;
# pytest.ini
[pytest]
python_files =? ? test_*? *_test? check_*
python_classes =? Test*? Check*
python_functions = test_*? check_*
禁用 XPASS:
將標記為 @pytest.mark.xfail?但實際通過的測試用例報告為失斚毒巍;
# pytest.ini
[pytest]
xfail_strict = true
避免文件名沖突:
為所有的測試目錄添加 __init__.py磕道,當多個測試目錄擁有重名文件時甚淡,__init__.py?可以避免文件名沖突;
動態(tài)添加及獲取 ini?配置參數:
# conftest.py
import pytest
def pytest_addoption(parser):
? ? parser.addini('nice', type='bool', default=True, help='添加 ini 參數')
@pytest.fixture(autouse=True)
def get_ini(pytestconfig):
? ? """獲取 ini 參數"""
? ? nice = pytestconfig.getini('nice')
? ? print(nice)