usage: pytest [options] [file_or_dir] [file_or_dir] [...]
positional arguments:
file_or_dir
general:
-k EXPRESSION Only run tests matching the given keyword expression, e.g. -k 'test_method
or test_other', -k 'not (slow or network)'.
Names in the expression are matched case-insensitively as substrings of the
test's keywords, which are:
- its own name, including any parametrization id
- the names of its class, module and directories
- the names of the markers applied to it or to its parents
- attributes assigned directly to the test function
- any names in its 'extra_keyword_matches' set
Use -m to match marker names exactly, including their arguments.
-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
--maxfail=num Exit after first num failures or errors
--strict-config Enables the strict_config option
--strict-markers Enables the strict_markers option
--strict Enables the strict option
--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
Specify a custom interactive Python debugger for use with --pdb.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}
With ``--lf``, determines whether to execute tests when there are no
previously (known) failures or when no cached ``lastfailed`` data was found.
``all`` (the default) runs the full test suite again. ``none`` just emits a
message about no known failures and exits successfully.
--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. Implicitly
enables --stepwise.
--sw-reset, --stepwise-reset
Resets stepwise state, restarting the stepwise workflow. Implicitly enables
--stepwise.
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
(or 0.0 if -vv is given).
-v, --verbose Increase verbosity
--no-header Disable header
--no-summary Disable summary
--no-fold-skipped Do not fold skipped tests in short summary.
--force-short-summary
Force condensed summary output regardless of verbosity level.
-q, --quiet Decrease verbosity
--verbosity=VERBOSE Set verbosity. Default: 0.
-r chars, --report-chars=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)
--no-showlocals Hide locals in tracebacks (negate --showlocals passed through addopts)
--tb=style Traceback print mode (auto/long/short/line/native/no)
--xfail-tb Show tracebacks for xfail (as long as --tb != no)
--show-capture={no,stdout,stderr,log,all}
Controls how captured stdout/stderr/log is shown on failed tests. Default:
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).
Default: yes.
--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
pytest-warnings:
-W PYTHONWARNINGS, --pythonwarnings=PYTHONWARNINGS
Set which warnings to report, see -W option of Python itself
--max-warnings=num Exit with error if all tests pass but the number of warnings exceeds this
threshold
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
--continue-on-collection-errors
Force test execution even if collection errors occur
--import-mode={prepend,append,importlib}
Prepend/append to sys.path when importing test modules and conftest files.
Default: 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 collection errors
--doctest-continue-on-failure
For a given doctest, continue to run after the first failure
test session debugging and configuration:
-c FILE, --config-file=FILE
Load configuration from `FILE` instead of trying to locate one of the
implicit configuration files.
--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'.
--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`. See also
--disable-plugin-autoload.
--disable-plugin-autoload
Disable plugin auto-loading through entry point packaging metadata. Only
plugins explicitly specified in -p or env var PYTEST_PLUGINS will be loaded.
--trace-config Trace considerations of conftest.py files
--debug=[DEBUG_FILE_NAME]
Store internal tracing debug information in this log file. This file is
opened with 'w' and truncated as a result, care advised. Default:
pytestdebug.log.
-o OVERRIDE_INI, --override-ini=OVERRIDE_INI
Override configuration option with "option=value" style, e.g. `-o
strict_xfail=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 used by the logging module
--log-date-format=LOG_DATE_FORMAT
Log date format used by the logging module
--log-cli-level=LOG_CLI_LEVEL
CLI logging level
--log-cli-format=LOG_CLI_FORMAT
Log format used by the logging module
--log-cli-date-format=LOG_CLI_DATE_FORMAT
Log date format used by the logging module
--log-file=LOG_FILE Path to a file when logging will be written to
--log-file-mode={w,a}
Log file open mode
--log-file-level=LOG_FILE_LEVEL
Log file logging level
--log-file-format=LOG_FILE_FORMAT
Log format used by the logging module
--log-file-date-format=LOG_FILE_DATE_FORMAT
Log date format 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.
--log-disable=LOGGER_DISABLE
Disable a logger by name. Can be passed multiple times.
anyio:
--anyio-mode=ANYIO_MODE
'auto' - All async test functions will be handled by AnyIO pytest plugin
'strict' - Disabling autoprocessing(useful when anyio tests
need to coexist with other async test plugins)
[pytest] configuration options in the first pytest.toml|pytest.ini|tox.ini|setup.cfg|pyproject.toml file found:
markers (linelist): Register new markers for test functions
empty_parameter_set_mark ('skip' | 'xfail' | 'fail_at_collect'):
Default marker for empty parametersets
strict_config (bool): Any warnings encountered while parsing the `pytest` section of the
configuration file raise errors
strict_markers (bool):
Markers not registered in the `markers` section of the configuration file
raise errors
strict (bool): Enables all strictness options, currently: strict_config, strict_markers,
strict_xfail, strict_parametrization_ids
filterwarnings (linelist):
Each line specifies a pattern for warnings.filterwarnings. Processed after
-W/--pythonwarnings.
max_warnings (int | string):
Exit with error if all tests pass but the number of warnings exceeds this
threshold
norecursedirs (args): Directory patterns to avoid for recursion
testpaths (args): Directories to search for tests when no files or directories are given on
the command line
collect_imported_tests (bool):
Whether to collect tests in imported modules outside `testpaths`
consider_namespace_packages (bool):
Consider namespace packages when resolving module names during import
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)
strict_parametrization_ids (bool):
Emit an error if non-unique parameter set IDs are detected
parametrize_long_str_id_strategy ('short' | 'sha256' | 'legacy' | 'disallow'):
strategy for long str/bytes parameter values in auto-generated ids
- short (default): values over 100 chars fall back to argname+index
- sha256: replace value with its sha256 hex digest
- legacy: keep the full value (for temporary backward compatibility)
- disallow: raise an error requesting explicit ids
console_output_style ('classic' | 'progress' | 'count' | 'times' | 'progress-even-when-capture-no'):
Console output: "classic", or with additional progress information
("progress" (percentage) | "count" | "times" |
"progress-even-when-capture-no" (forces progress even when capture=no)
verbosity_test_cases (int | 'auto'):
Specify a verbosity level for test case execution, overriding the main
level. Higher levels will provide more detailed information about each test
case executed.
strict_xfail (bool): Default for the strict parameter of xfail markers when not given explicitly
(default: False) (alias: xfail_strict)
tmp_path_retention_count (int | string):
How many sessions should we keep the `tmp_path` directories, according to
`tmp_path_retention_policy`.
tmp_path_retention_policy ('all' | 'failed' | 'none'):
Controls which directories created by the `tmp_path` fixture are kept
around, based on test outcome.
enable_assertion_pass_hook (bool):
Enables the pytest_assertion_pass hook. Make sure to delete any previously
generated pyc cache files.
truncation_limit_lines (int | string):
Set threshold of LINES after which truncation will take effect
truncation_limit_chars (int | string):
Set threshold of CHARS after which truncation will take effect
assertion_text_diff_style ('ndiff' | 'block'):
Choose how pytest renders diffs for string equality assertions
verbosity_assertions (int | 'auto'):
Specify a verbosity level for assertions, overriding the main level. Higher
levels will provide more detailed explanation when an assertion fails.
junit_suite_name (string):
Test suite name for JUnit report
junit_logging ('no' | 'log' | 'system-out' | 'system-err' | 'out-err' | 'all'):
Write captured log messages to JUnit report
junit_log_passing_tests (bool):
Capture log information for passing tests to JUnit report:
junit_duration_report ('total' | 'call'):
Duration time to report
junit_family ('legacy' | 'xunit1' | 'xunit2'):
Emit XML for schema
doctest_optionflags (args):
Option flags for doctests
doctest_encoding (string):
Encoding used for doctest files
cache_dir (string): Cache directory path
log_level (int | 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 (int | 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_mode ('w' | 'a'):
Default value for --log-file-mode
log_file_level (int | 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 (int | bool | string):
Default value for --log-auto-indent
faulthandler_timeout (float | string):
Dump the traceback of all threads if a test takes more than TIMEOUT seconds
to finish
faulthandler_exit_on_timeout (bool):
Exit the test process if a test takes more than faulthandler_timeout seconds
to finish
verbosity_subtests (int | 'auto'):
Specify verbosity level for subtests. Higher levels will generate output for
passed subtests. Failed subtests are always reported.
addopts (args): Extra command line options
minversion (string): Minimally required pytest version
pythonpath (paths): Add paths to sys.path
required_plugins (args):
Plugins that must be present for pytest to run
anyio_mode (string): AnyIO plugin mode (either "strict" or "auto")
Environment variables:
CI When set to a non-empty value, pytest knows it is running in a CI process and does not truncate summary info
BUILD_NUMBER Equivalent to CI
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
PYTEST_DEBUG_TEMPROOT Override the system temporary directory
PYTEST_THEME The Pygments style to use for code output
PYTEST_THEME_MODE Set the PYTEST_THEME to be either 'dark' or 'light'
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
Options (93)
| Option | Description | Source |
|---|---|---|
-k EXPRESSION | Only run tests matching the given keyword expression, e.g. -k 'test_method or test_other', -k 'not (slow or network)'. | help |
-m MARKEXPR | Only run tests matching given mark expression. | help |
--markers | show markers (builtin, plugin and per-project ones). | help |
-x, --exitfirst | Exit instantly on first error or failed test | help |
--maxfail num | Exit after first num failures or errors | help |
--strict-config | Enables the strict_config option | help |
--strict-markers | Enables the strict_markers option | help |
--strict | Enables the strict option | help |
--fixtures, --funcargs | Show available fixtures, sorted by plugin appearance (fixtures with leading '_' are only shown with '-v') | help |
--fixtures-per-test | Show fixtures per test | help |
--pdb | Start the interactive Python debugger on errors or KeyboardInterrupt | help |
--pdbcls modulename:classname | Specify a custom interactive Python debugger for use with --pdb.For example: | help |
--trace | Immediately break when running each test | help |
--capture method | Per-test capturing method: one of fd|sys|no|tee-sys | help |
-s | Shortcut for --capture=no | help |
--runxfail | Report the results of xfail tests as if they were not marked | help |
--lf, --last-failed | Rerun only the tests that failed at the last run (or all if none failed) | help |
--ff, --failed-first | Run all tests, but run the last failures first. | help |
--nf, --new-first | Run tests from new files first, then the rest of the tests sorted by file mtime | help |
--cache-show CACHESHOW | Show cache contents, don't perform collection or tests. | help |
--cache-clear | Remove all cache contents at start of test run | help |
--lfnf, --last-failed-no-failures all | With ``--lf``, determines whether to execute tests when there are no previously (known) failures or when no cached ``lastfailed`` data was found. | help |
--sw, --stepwise | Exit on test failure and continue from last failing test next time | help |
--sw-skip, --stepwise-skip | Ignore the first failing test but stop on the next failing test. | help |
--sw-reset, --stepwise-reset | Resets stepwise state, restarting the stepwise workflow. | help |
--durations N | Show N slowest setup/test durations (N=0 for all) | help |
--durations-min N | Minimal duration in seconds for inclusion in slowest list. | help |
-v, --verbose | Increase verbosity | help |
--no-header | Disable header | help |
--no-summary | Disable summary | help |
--no-fold-skipped | Do not fold skipped tests in short summary. | help |
--force-short-summary | Force condensed summary output regardless of verbosity level. | help |
-q, --quiet | Decrease verbosity | help |
--verbosity VERBOSE | Set verbosity. | help |
-r, --report-chars 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. | help |
--disable-warnings, --disable-pytest-warnings | Disable warnings summary | help |
-l, --showlocals | Show locals in tracebacks (disabled by default) | help |
--no-showlocals | Hide locals in tracebacks (negate --showlocals passed through addopts) | help |
--tb style | Traceback print mode (auto/long/short/line/native/no) | help |
--xfail-tb | Show tracebacks for xfail (as long as --tb != no) | help |
--show-capture no | Controls how captured stdout/stderr/log is shown on failed tests. | help |
--full-trace | Don't cut any tracebacks (default is to cut) | help |
--color color | Color terminal output (yes/no/auto) | help |
--code-highlight yes | Whether code should be highlighted (only if --color is also enabled). | help |
--pastebin mode | Send failed|all info to bpaste.net pastebin service | help |
--junit-xml path | Create junit-xml style report file at given path | help |
--junit-prefix str | Prepend prefix to classnames in junit-xml output | help |
-W, --pythonwarnings PYTHONWARNINGS | Set which warnings to report, see -W option of Python itself | help |
--max-warnings num | Exit with error if all tests pass but the number of warnings exceeds this threshold | help |
--collect-only, --co | Only collect tests, don't execute them | help |
--pyargs | Try to interpret all arguments as Python packages | help |
--ignore path | Ignore path during collection (multi-allowed) | help |
--ignore-glob path | Ignore path pattern during collection (multi-allowed) | help |
--deselect nodeid_prefix | Deselect item (via node id prefix) during collection (multi-allowed) | help |
--confcutdir dir | Only load conftest.py's relative to specified dir | help |
--noconftest | Don't load any conftest.py files | help |
--keep-duplicates | Keep duplicate tests | help |
--collect-in-virtualenv | Don't ignore tests in a local virtualenv directory | help |
--continue-on-collection-errors | Force test execution even if collection errors occur | help |
--import-mode prepend | Prepend/append to sys.path when importing test modules and conftest files. | help |
--doctest-modules | Run doctests in all .py modules | help |
--doctest-report none | Choose another output format for diffs on doctest failure | help |
--doctest-glob pat | Doctests file matching pattern, default: test*.txt | help |
--doctest-ignore-import-errors | Ignore doctest collection errors | help |
--doctest-continue-on-failure | For a given doctest, continue to run after the first failure | help |
-c, --config-file FILE | Load configuration from `FILE` instead of trying to locate one of the implicit configuration files. | help |
--rootdir ROOTDIR | Define root directory for tests. | help |
--basetemp dir | Base temporary directory for this test run. | help |
-V, --version | Display pytest version and information about plugins. | help |
-h, --help | Show help message and configuration info | help |
-p name | Early-load given plugin module name or entry point (multi-allowed). | help |
--disable-plugin-autoload | Disable plugin auto-loading through entry point packaging metadata. | help |
--trace-config | Trace considerations of conftest.py files | help |
--debug DEBUG_FILE_NAME | Store internal tracing debug information in this log file. | help |
-o, --override-ini OVERRIDE_INI | Override configuration option with "option=value" style, e.g. `-o strict_xfail=True -o cache_dir=cache`. | help |
--assert MODE | Control assertion debugging tools. | help |
--setup-only | Only setup fixtures, do not execute tests | help |
--setup-show | Show setup of fixtures while executing tests | help |
--setup-plan | Show what fixtures and tests would be executed but don't execute anything | help |
--log-level LEVEL | Level of messages to catch/display. | help |
--log-format LOG_FORMAT | Log format used by the logging module | help |
--log-date-format LOG_DATE_FORMAT | Log date format used by the logging module | help |
--log-cli-level LOG_CLI_LEVEL | CLI logging level | help |
--log-cli-format LOG_CLI_FORMAT | Log format used by the logging module | help |
--log-cli-date-format LOG_CLI_DATE_FORMAT | Log date format used by the logging module | help |
--log-file LOG_FILE | Path to a file when logging will be written to | help |
--log-file-mode w | Log file open mode | help |
--log-file-level LOG_FILE_LEVEL | Log file logging level | help |
--log-file-format LOG_FILE_FORMAT | Log format used by the logging module | help |
--log-file-date-format LOG_FILE_DATE_FORMAT | Log date format used by the logging module | help |
--log-auto-indent LOG_AUTO_INDENT | Auto-indent multiline messages passed to the logging module. | help |
--log-disable LOGGER_DISABLE | Disable a logger by name. | help |
--anyio-mode ANYIO_MODE | 'auto' - All async test functions will be handled by AnyIO pytest plugin 'strict' - Disabling autoprocessing(useful when anyio tests need to coexist with other async test plugins) | help |