pytest.ini配置文件可以改變pytest一些默認的運行方式,如:用例收集規則,標簽,命令行參數等等。
基本格式如下:
# 新建pytest.ini文件,一般放在項目的頂級目錄下,不能隨意命名 [pytest] addopts = -v --rerun=2 --count=2 xfail_strict = true
使用pytest -h參看幫助文檔,找到這行:ini-options in the first pytest.ini|tox.ini|setup.cfg file found
[pytest] ini-options in the first pytest.ini|tox.ini|setup.cfg file found: markers (linelist): markers for test functions empty_parameter_set_mark (string): default marker for empty parametersets norecursedirs (args): directory patterns to avoid for recursion testpaths (args): directories to search for tests when no files or directories are given in the command line. filterwarnings (linelist): Each line specifies a pattern for warnings.filterwarnings. Processed after -W/--pythonwarnings. usefixtures (args): list of default fixtures to be used with this project python_files (args): glob-style file patterns for Python test module discovery python_classes (args): prefixes or glob names for Python test class discovery python_functions (args): prefixes or glob names for Python test function and method discovery disable_test_id_escaping_and_forfeit_all_rights_to_community_support (bool): disable string escape non-ascii characters, might cause unwanted side effects(use at your own risk) console_output_style (string): console output: "classic", or with additional progress information ("progress" (percentage) | "count"). xfail_strict (bool): default for the strict parameter of xfail markers when not given explicitly (default: False) enable_assertion_pass_hook (bool): Enables the pytest_assertion_pass hook.Make sure to delete any previously generated pyc cache files. junit_suite_name (string): Test suite name for JUnit report junit_logging (string): Write captured log messages to JUnit report: one of no|log|system-out|system-err|out-err|all junit_log_passing_tests (bool): Capture log information for passing tests to JUnit report: junit_duration_report (string): Duration time to report: one of total|call junit_family (string): Emit XML for schema: one of legacy|xunit1|xunit2 doctest_optionflags (args): option flags for doctests doctest_encoding (string): encoding used for doctest files cache_dir (string): cache directory path. log_level (string): default value for --log-level log_format (string): default value for --log-format log_date_format (string): default value for --log-date-format log_cli (bool): enable log display during test run (also known as "live logging"). log_cli_level (string): default value for --log-cli-level log_cli_format (string): default value for --log-cli-format log_cli_date_format (string): default value for --log-cli-date-format log_file (string): default value for --log-file log_file_level (string): default value for --log-file-level log_file_format (string): default value for --log-file-format log_file_date_format (string): default value for --log-file-date-format log_auto_indent (string): default value for --log-auto-indent faulthandler_timeout (string): Dump the traceback of all threads if a test takes more than TIMEOUT seconds to finish. addopts (args): extra command line options minversion (string): minimally required pytest version required_plugins (args): plugins that must be present for pytest to run
以下是一些常用的配置:
1、addopts
更改默認命令行選項,當我們用命令行運行時,需要輸入多個參數,很不方便。比如想測試完生成報告,失敗重跑兩次,一共運行兩次,通過分布式去測試,如果在命令行中執行的話,命令會很長,很不方便
pytest -v --rerun=2 --count=2 --html=report.html --self-contained-html -n=auto
這時可以在pytest.ini文件通過addopts 加上子而寫參數
# 命令行參數 addopts = -v --reruns=1 --count=2 --html=reports.html --self-contained-html -n=auto
在命令行中只需要輸入pytest就可以默認以這些參數去執行了。
2、更改測試用例收集規則
pytest默認的測試用例收集規則
- 文件名以 test_*.py 文件和 *_test.py
- 以 test_ 開頭的函數
- 以 Test 開頭的類,不能包含 __init__ 方法
如果需要修改這些規則,可以在pytest.ini文件中加入以下配置:
#測試用例收集規則 python_files = test_*.py *_test.py # 文件名 python_classes = Test* # 類 python_functions = test_* # 函數
多個匹配規則以空格分開
3、指定搜索測試用例目錄
testpaths = apicase #指定用例搜索目錄
只收集apicase目錄下的測試用例
4、排除搜索目錄
norecursedirs = tmp* *plugins
不搜索tmp的前綴文件和plugins的后綴文件
5、指定mark標簽
markers = smoke: this is smoke case login: this is login case
6、xfail_strict
設置xfail_strict = True可以讓那些標記為@pytest.mark.xfail但實際通過顯示XPASS的測試用例被報告為失敗
xfail_strict = True