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. .. _`how to change command line options defaults`: .. _`adding default options`: how to change command line options defaults ------------------------------------------------ py.test provides a simple way to set some default command line options. For example, if you want to always see detailed info on skipped and xfailed tests, as well as have terser "dot progress output", you can add this to your root directory:: # content of pytest.ini # (or tox.ini or setup.cfg) [pytest] addopts = -rsxX -q From now on, running ``py.test`` will implicitely add the specified options. builtin configuration file options ---------------------------------------------- .. confval:: minversion specifies a minimal pytest version needed for running tests. minversion = 2.1 # will fail if we run with pytest-2.0 .. confval:: 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. .. confval:: 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. .. confval:: python_files One or more Glob-style file patterns determining which python files are considered as test modules. .. confval:: python_classes One or more name prefixes determining which test classes are considered as test modules. .. confval:: python_functions One or more name prefixes determining which test functions and methods are considered as test modules. See :ref:`change naming conventions` for examples.