一、官方文档
二、pytest命令行详解
1、查看命令帮助
$ pytest --help
usage: pydevconsole.py [options] [file_or_dir] [file_or_dir] [...]
positional arguments:
file_or_dir
general:
-k EXPRESSION only run tests which match the given substring
expression. An expression is a python evaluatable
expression where all names are substring-matched against
test names and their parent classes. Example: -k
'test_method or test_other' matches all test functions
and classes whose name contains 'test_method' or
'test_other', while -k 'not test_method' matches those
that don't contain 'test_method' in their names. -k 'not
test_method and not test_other' will eliminate the
matches. Additionally keywords are matched to classes
and functions containing extra names in their
'extra_keyword_matches' set, as well as functions which
have names assigned directly to them. The matching is
case-insensitive.
-m MARKEXPR only run tests matching given mark expression.
For example: -m 'mark1 and not mark2'.
--markers show markers (builtin, plugin and per-project ones).
-x, --exitfirst exit instantly on first error or failed test.
--fixtures, --funcargs
show available fixtures, sorted by plugin appearance
(fixtures with leading '_' are only shown with '-v')
--fixtures-per-test show fixtures per test
--pdb start the interactive Python debugger on errors or
KeyboardInterrupt.
--pdbcls=modulename:classname
start a custom interactive Python debugger on errors.
For example:
--pdbcls=IPython.terminal.debugger:TerminalPdb
--trace Immediately break when running each test.
--capture=method per-test capturing method: one of fd|sys|no|tee-sys.
-s shortcut for --capture=no.
--runxfail report the results of xfail tests as if they were not
marked
--lf, --last-failed rerun only the tests that failed at the last run (or all
if none failed)
--ff, --failed-first run all tests, but run the last failures first.
This may re-order tests and thus lead to repeated
fixture setup/teardown.
--nf, --new-first run tests from new files first, then the rest of the
tests sorted by file mtime
--cache-show=[CACHESHOW]
show cache contents, don't perform collection or tests.
Optional argument: glob (default: '*').
--cache-clear remove all cache contents at start of test run.
--lfnf={all,none}, --last-failed-no-failures={all,none}
which tests to run with no previously (known) failures.
--sw, --stepwise exit on test failure and continue from last failing test
next time
--sw-skip, --stepwise-skip
ignore the first failing test but stop on the next
failing test
reporting:
--durations=N show N slowest setup/test durations (N=0 for all).
--durations-min=N Minimal duration in seconds for inclusion in slowest
list. Default 0.005
-v, --verbose increase verbosity.
--no-header disable header
--no-summary disable summary
-q, --quiet decrease verbosity.
--verbosity=VERBOSE set verbosity. Default is 0.
-r chars show extra test summary info as specified by chars:
(f)ailed, (E)rror, (s)kipped, (x)failed, (X)passed,
(p)assed, (P)assed with output, (a)ll except passed
(p/P), or (A)ll. (w)arnings are enabled by default (see
--disable-warnings), 'N' can be used to reset the list.
(default: 'fE').
--disable-warnings, --disable-pytest-warnings
disable warnings summary
-l, --showlocals show locals in tracebacks (disabled by default).
--tb=style traceback print mode (auto/long/short/line/native/no).
--show-capture={no,stdout,stderr,log,all}
Controls how captured stdout/stderr/log is shown on
failed tests. Default is 'all'.
--full-trace don't cut any tracebacks (default is to cut).
--color=color color terminal output (yes/no/auto).
--code-highlight={yes,no}
Whether code should be highlighted (only if --color is
also enabled)
--pastebin=mode send failed|all info to bpaste.net pastebin service.
--junit-xml=path create junit-xml style report file at given path.
--junit-prefix=str prepend prefix to classnames in junit-xml output
--html=path create html report file at given path.
--self-contained-html
create a self-contained html file containing all
necessary styles, scripts, and images - this means that
the report may not render or function where CSP
restrictions are in place (see
https://developer.mozilla.org/docs/Web/Security/CSP)
--css=path append given css file content to report style file.
pytest-warnings:
-W PYTHONWARNINGS, --pythonwarnings=PYTHONWARNINGS
set which warnings to report, see -W option of python
itself.
--maxfail=num exit after first num failures or errors.
--strict-config any warnings encountered while parsing the `pytest`
section of the configuration file raise errors.
--strict-markers markers not registered in the `markers` section of the
configuration file raise errors.
--strict (deprecated) alias to --strict-markers.
-c file load configuration from `file` instead of trying to
locate one of the implicit configuration files.
--continue-on-collection-errors
Force test execution even if collection errors occur.
--rootdir=ROOTDIR Define root directory for tests. Can be relative path:
'root_dir', './root_dir', 'root_dir/another_dir/';
absolute path: '/home/user/root_dir'; path with
variables: '$HOME/root_dir'.
collection:
--collect-only, --co only collect tests, don't execute them.
--pyargs try to interpret all arguments as python packages.
--ignore=path ignore path during collection (multi-allowed).
--ignore-glob=path ignore path pattern during collection (multi-allowed).
--deselect=nodeid_prefix
deselect item (via node id prefix) during collection
(multi-allowed).
--confcutdir=dir only load conftest.py's relative to specified dir.
--noconftest Don't load any conftest.py files.
--keep-duplicates Keep duplicate tests.
--collect-in-virtualenv
Don't ignore tests in a local virtualenv directory
--import-mode={prepend,append,importlib}
prepend/append to sys.path when importing test modules
and conftest files, default is to prepend.
--doctest-modules run doctests in all .py modules
--doctest-report={none,cdiff,ndiff,udiff,only_first_failure}
choose another output format for diffs on doctest
failure
--doctest-glob=pat doctests file matching pattern, default: test*.txt
--doctest-ignore-import-errors
ignore doctest ImportErrors
--doctest-continue-on-failure
for a given doctest, continue to run after the first
failure
test session debugging and configuration:
--basetemp=dir base temporary directory for this test run.(warning:
this directory is removed if it exists)
-V, --version display pytest version and information about
plugins.When given twice, also display information about
plugins.
-h, --help show help message and configuration info
-p name early-load given plugin module name or entry point
(multi-allowed).
To avoid loading of plugins, use the `no:` prefix, e.g.
`no:doctest`.
--trace-config trace considerations of conftest.py files.
--debug store internal tracing debug information in
'pytestdebug.log'.
-o OVERRIDE_INI, --override-ini=OVERRIDE_INI
override ini option with "option=value" style, e.g. `-o
xfail_strict=True -o cache_dir=cache`.
--assert=MODE Control assertion debugging tools.
'plain' performs no assertion debugging.
'rewrite' (the default) rewrites assert statements in
test modules on import to provide assert expression
information.
--setup-only only setup fixtures, do not execute tests.
--setup-show show setup of fixtures while executing tests.
--setup-plan show what fixtures and tests would be executed but don't
execute anything.
logging:
--log-level=LEVEL level of messages to catch/display.
Not set by default, so it depends on the root/parent log
handler's effective level, where it is "WARNING" by
default.
--log-format=LOG_FORMAT
log format as used by the logging module.
--log-date-format=LOG_DATE_FORMAT
log date format as used by the logging module.
--log-cli-level=LOG_CLI_LEVEL
cli logging level.
--log-cli-format=LOG_CLI_FORMAT
log format as used by the logging module.
--log-cli-date-format=LOG_CLI_DATE_FORMAT
log date format as used by the logging module.
--log-file=LOG_FILE path to a file when logging will be written to.
--log-file-level=LOG_FILE_LEVEL
log file logging level.
--log-file-format=LOG_FILE_FORMAT
log format as used by the logging module.
--log-file-date-format=LOG_FILE_DATE_FORMAT
log date format as used by the logging module.
--log-auto-indent=LOG_AUTO_INDENT
Auto-indent multiline messages passed to the logging
module. Accepts true|on, false|off or an integer.
custom options:
--metadata=key value additional metadata.
--metadata-from-json=METADATA_FROM_JSON
additional metadata from a json string.
[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
render_collapsed (bool):
Open the report with all rows collapsed. Useful for very
large reports
max_asset_filename_length (string):
set the maximum filename length for assets attached to
the html report.
environment variables:
PYTEST_ADDOPTS extra command line options
PYTEST_PLUGINS comma-separated plugins to load during startup
PYTEST_DISABLE_PLUGIN_AUTOLOAD set to disable plugin auto-loading
PYTEST_DEBUG set to enable debug tracing of pytest's internals
to see available markers type: pytest --markers
to see available fixtures type: pytest --fixtures
(shown according to specified file_or_dir or current dir if not specified; fixtures with leading '_' are only shown with the '-v' option
<ExitCode.OK: 0>
2、选项详解
选项(options)是命令行程序后面以连字符 "-"(原始的Unix风格) 或 "--"(GNU风格) 开头的字符或字符串, 选项后面可加参数(argument). 参数是不带 "-" 前导符的.
标号 | 选项 | 作用 |
1 | -k | 1、只运行与给定子字符串表达式匹配的测试函数或测试类,匹配不区分大小写,例如: (1)-k 'test_a or test_b' :表示如果测试类或函数的名称包含这不区分大小写的两个字段(test_a、test_b、Test_A等等)的任意一个,将被运行,反之,不被运行。 (2)-k 'not test_method' :表示如果脚本名称不包含该字段,将被运行,反之,不运行 (3)-k 'not test_a and not test_b' : 这种方式将不生效,不要这样用 |
2 | -m | 1、只运行匹配给定标记表达式的测试,使用过程: (1)首先需要注册标签(可新建pytest.ini并创建标签) (2)测试类或函数在使用时,使用@pytest.mark.标签名装饰 (3)-m 'mark1 and not mark2' :表示运行标签名为mark1和标签名不为mark2的测试用例 |
3 | --markers | 1、显示标记(内置、插件和每个项目的标记),没有参数 |
4 | -x 或 --exitfirst | 1、在第一次测试错误或失败时立即退出,没有参数 |
5 | --fixtures 或 --funcargs | 1、显示可用的测试套件,按插件外观排序(要显示以'_'开头的fixture,则需要与'-v'参数一起用),没有参数 |
6 | --fixtures-per-test | 1、每次测试显示测试套件 |
7 | --pdb | 1、启动交互式Python调试器,用于调试 |
8 | --pdbcls | 1、在错误时启动一个定制的交互式Python调试器,也是用于调试,例如: --pdbcls = IPython.terminal.debugger: TerminalPdb |
9 | --trace | 1、当运行测试时,每运行一次,则立即中断一次 |
10 | --capture | 1、每测试都捕获方法,可选参数fd|sys|no|tee-sys,例如: --capture=no, 用于显示测试函数中print()函数输出 |
11 | -s | 1、等同于--capture=no, 用于显示测试函数中print()函数输出 |
12 | --runxfail | 1、使用xfail标记希望的测试用例失败,会运行此测试用例,但是在报告中会将其列在“预期失败”( |
13 | --lf 或 --last-failed | 1、仅运行上次失败的测试用例 |
14 | --ff 或 --failed-first | 1、先运行测试失败的测试用例,再运行原先成功的测试用例 |
15 | --nf 或 --new-first | 1、先运行新增文件的测试用例,在运行原来文件的测试用例 |
16 | --cache-show | 1、显示缓存内容,但不执行收集或测试,可选参数:glob(默认值:'*'),例如: pytest --cache-show |
17 | --cache-clear | 1、用于在测试用例开始之前清空cache的内容 |
18 | --lfnf 或 --last-failed-no-failures | 1、运行那些以前(已知)没有失败的测试,例如: pytest --last-failed-no-failures={all,none} |
19 | --sw 或 --stepwise | 1、在测试失败时退出,并从上次失败的测试继续 下次 |
20 | --sw-skip 或 --stepwise-skip | 1、忽略第一个失败的测试,但在第二个测试中停止 失败的测试 |
21 | --durations | 1、显示最慢的测试用例,例如 pytest --durations=10 ,表示显示10个最慢的测试用 |
22 | --durations-min | 1、以秒为单位显示最慢的测试用例,最小持续时间为0.005秒 |
23 | -v 或 --verbose | 1、长显示,让显示内容更丰富,与-q相反 |
24 | --no-header | 1、去掉页眉 |
25 | --no-summary | 1、去掉概要 |
26 | -q 或 --quiet | 1、短显示,让内容简短显示,与-v相反 |
27 | --verbosity | 1、设置显示,默认是0,例如 pytest --verbosity=0 |
28 | -r | 1、显示由字符指定的额外测试摘要信息,例如: -r f :表示展示失败 -r E :表示展示错误 -r s : 表示展示跳过 -r x :表示展示期望失败 默认 -r fE |
29 | --disable-warnings 或 --disable-pytest-warnings | 1、禁用警告总结,即warnings不展示,与 -r w 相反 |
30 | -l 或 --showlocals | 1、在回溯中显示本地变量(默认禁用)。 |
31 | --tb | 1、回溯打印模式,可选参数auto/long/short/line/native/no,例如: --tb=no |
32 | --show-capture | 1、控制如何显示捕获失败测试的stdout/stderr/log。默认是“所有”。 |
33 | --full-trace | 1、不要削减任何回溯(默认是削减) |
34 | --color | 1、彩色终端输出 |
... | ... | ...(太多了,请查阅官方文档) |