Table Of Contents

Previous topic

pytest builtin helpers

Next topic

Writing and reporting of assertions in tests

This Page

basic test configuration

Command line options and configuration file settings

You can get help on options and ini-config values by running:

py.test -h   # prints options _and_ config file settings

This will display command line and configuration file settings which were registered by installed plugins.

how test configuration is read from setup/tox ini-files

py.test searched for the first matching ini-style configuration file in the directories of command line argument and the directories above. It looks for filenames in this order:

pytest.ini
tox.ini
setup.cfg

Searching stops when the first [pytest] section is found. There is no merging of configuration values from multiple files. Example:

py.test path/to/testdir

will look in the following dirs for a config file:

path/to/testdir/pytest.ini
path/to/testdir/tox.ini
path/to/testdir/setup.cfg
path/to/pytest.ini
path/to/tox.ini
path/to/setup.cfg
... # up until root of filesystem

If argument is provided to a py.test run, the current working directory is used to start the search.

builtin configuration file options

minversion

specifies a minimal pytest version needed for running tests.

minversion = 2.1 # will fail if we run with pytest-2.0
addopts

add the specified OPTS to the set of command line arguments as if they had been specified by the user. Example: if you have this ini file content:

[pytest]
addopts = --maxfail=2 -rf  # exit after 2 failures, report fail info

issuing py.test test_hello.py actually means:

py.test --maxfail=2 -rf test_hello.py

Default is to add no options.

norecursedirs

Set the directory basename patterns to avoid when recursing for test discovery. The individual (fnmatch-style) patterns are applied to the basename of a directory to decide if to recurse into it. Pattern matching characters:

*       matches everything
?       matches any single character
[seq]   matches any character in seq
[!seq]  matches any char not in seq

Default patterns are .* _* CVS {args}. Setting a norecurse replaces the default. Here is a customizing example for avoiding a different set of directories:

# content of setup.cfg
[pytest]
norecursedirs = .svn _build tmp*

This would tell py.test to not recurse into typical subversion or sphinx-build directories or into any tmp prefixed directory.