
.. _`pytest helpers`:

Pytest API and builtin fixtures
================================================

This is a list of ``pytest.*`` API functions and fixtures.

For information on plugin hooks and objects, see :ref:`plugins`.

For information on the ``pytest.mark`` mechanism, see :ref:`mark`.

For the below objects, you can also interactively ask for help, e.g. by
typing on the Python interactive prompt something like::

    import pytest
    help(pytest)

.. currentmodule:: pytest

Invoking pytest interactively
---------------------------------------------------

.. autofunction:: main

More examples at :ref:`pytest.main-usage`


Helpers for assertions about Exceptions/Warnings
--------------------------------------------------------

.. autofunction:: raises

Examples at :ref:`assertraises`.

.. autofunction:: deprecated_call

Raising a specific test outcome
--------------------------------------

You can use the following functions in your test, fixture or setup
functions to force a certain test outcome.  Note that most often
you can rather use declarative marks, see :ref:`skipping`.

.. autofunction:: _pytest.runner.fail
.. autofunction:: _pytest.runner.skip
.. autofunction:: _pytest.runner.importorskip
.. autofunction:: _pytest.skipping.xfail
.. autofunction:: _pytest.runner.exit

fixtures and requests
-----------------------------------------------------

To mark a fixture function:

.. autofunction:: _pytest.python.fixture

Tutorial at :ref:`fixtures`.

The ``request`` object that can be used from fixture functions.

.. autoclass:: _pytest.python.FixtureRequest()
    :members:


.. _builtinfixtures:
.. _builtinfuncargs:

Builtin fixtures/function arguments
-----------------------------------------

You can ask for available builtin or project-custom
:ref:`fixtures <fixtures>` by typing::

    $ py.test -q --fixtures
    capsys
        enables capturing of writes to sys.stdout/sys.stderr and makes
        captured output available via ``capsys.readouterr()`` method calls
        which return a ``(out, err)`` tuple.
    capfd
        enables capturing of writes to file descriptors 1 and 2 and makes
        captured output available via ``capfd.readouterr()`` method calls
        which return a ``(out, err)`` tuple.
    monkeypatch
        The returned ``monkeypatch`` funcarg provides these
        helper methods to modify objects, dictionaries or os.environ::
        
        monkeypatch.setattr(obj, name, value, raising=True)
        monkeypatch.delattr(obj, name, raising=True)
        monkeypatch.setitem(mapping, name, value)
        monkeypatch.delitem(obj, name, raising=True)
        monkeypatch.setenv(name, value, prepend=False)
        monkeypatch.delenv(name, value, raising=True)
        monkeypatch.syspath_prepend(path)
        monkeypatch.chdir(path)
        
        All modifications will be undone after the requesting
        test function has finished. The ``raising``
        parameter determines if a KeyError or AttributeError
        will be raised if the set/deletion operation has no target.
    pytestconfig
        the pytest config object with access to command line opts.
    recwarn
        Return a WarningsRecorder instance that provides these methods:
        
        * ``pop(category=None)``: return last warning matching the category.
        * ``clear()``: clear list of warnings
        
        See http://docs.python.org/library/warnings.html for information
        on warning categories.
    tmpdir
        return a temporary directory path object
        which is unique to each test function invocation,
        created as a sub directory of the base temporary
        directory.  The returned object is a `py.path.local`_
        path object.
    
     in 0.12 seconds
