2018-02-27 07:27:15 +08:00
:orphan:
2010-11-06 06:37:31 +08:00
2010-11-18 21:56:16 +08:00
.. _`pytest helpers`:
2012-10-09 20:35:17 +08:00
Pytest API and builtin fixtures
2010-11-06 06:37:31 +08:00
================================================
2018-02-27 07:27:15 +08:00
2021-03-17 04:26:05 +08:00
Most of the information of this page has been moved over to :ref: `api-reference` .
2012-10-09 20:35:17 +08:00
For information on plugin hooks and objects, see :ref: `plugins` .
For information on the `` pytest.mark `` mechanism, see :ref: `mark` .
2010-11-06 06:37:31 +08:00
2018-11-24 13:41:22 +08:00
For information about fixtures, see :ref: `fixtures` . To see a complete list of available fixtures (add `` -v `` to also see fixtures with leading `` _ `` ), type :
.. code-block :: pytest
2010-11-06 06:37:31 +08:00
2021-10-04 14:56:26 +08:00
$ pytest --fixtures -v
=========================== test session starts ============================
2021-12-07 17:13:36 +08:00
platform linux -- Python 3.x.y, pytest-7.x.y, pluggy-1.x.y -- $PYTHON_PREFIX/bin/python
2021-10-04 14:56:26 +08:00
cachedir: .pytest_cache
rootdir: /home/sweet/project
collected 0 items
2021-12-07 17:13:36 +08:00
cache -- .../_pytest/cacheprovider.py:510
2018-03-22 04:46:07 +08:00
Return a cache object that can persist state between testing sessions.
2018-07-04 08:58:18 +08:00
2018-03-22 04:46:07 +08:00
cache.get(key, default)
cache.set(key, value)
2018-07-04 08:58:18 +08:00
2020-09-27 02:09:34 +08:00
Keys must be `` / `` separated strings, where the first part is usually the
2018-03-22 04:46:07 +08:00
name of your plugin or application to avoid clashes with other cache users.
2018-07-04 08:58:18 +08:00
2018-03-22 04:46:07 +08:00
Values can be any object handled by the json stdlib module.
2019-05-09 05:50:08 +08:00
2021-12-07 17:13:36 +08:00
capsys -- .../_pytest/capture.py:878
2019-03-30 04:49:18 +08:00
Enable text capturing of writes to `` sys.stdout `` and `` sys.stderr `` .
The captured output is made available via `` capsys.readouterr() `` method
calls, which return a `` (out, err) `` namedtuple.
`` out `` and `` err `` will be `` text `` objects.
2019-05-09 05:50:08 +08:00
2021-12-07 17:13:36 +08:00
capsysbinary -- .../_pytest/capture.py:895
2019-03-30 04:49:18 +08:00
Enable bytes capturing of writes to `` sys.stdout `` and `` sys.stderr `` .
The captured output is made available via `` capsysbinary.readouterr() ``
method calls, which return a `` (out, err) `` namedtuple.
`` out `` and `` err `` will be `` bytes `` objects.
2019-05-09 05:50:08 +08:00
2021-12-07 17:13:36 +08:00
capfd -- .../_pytest/capture.py:912
2019-03-30 04:49:18 +08:00
Enable text capturing of writes to file descriptors `` 1 `` and `` 2 `` .
The captured output is made available via `` capfd.readouterr() `` method
calls, which return a `` (out, err) `` namedtuple.
`` out `` and `` err `` will be `` text `` objects.
2019-05-09 05:50:08 +08:00
2021-12-07 17:13:36 +08:00
capfdbinary -- .../_pytest/capture.py:929
2019-03-30 04:49:18 +08:00
Enable bytes capturing of writes to file descriptors `` 1 `` and `` 2 `` .
The captured output is made available via `` capfd.readouterr() `` method
calls, which return a `` (out, err) `` namedtuple.
`` out `` and `` err `` will be `` byte `` objects.
2019-05-09 05:50:08 +08:00
2021-12-07 17:13:36 +08:00
doctest_namespace [session scope] -- .../_pytest/doctest.py:731
2020-09-27 02:09:34 +08:00
Fixture that returns a :py:class: `dict` that will be injected into the
namespace of doctests.
2019-05-09 05:50:08 +08:00
2021-12-07 17:13:36 +08:00
pytestconfig [session scope] -- .../_pytest/fixtures.py:1365
2021-10-04 14:56:26 +08:00
Session-scoped fixture that returns the session's :class: `pytest.Config`
object.
2018-07-04 08:58:18 +08:00
2018-03-22 04:46:07 +08:00
Example::
2018-07-04 08:58:18 +08:00
2018-03-22 04:46:07 +08:00
def test_foo(pytestconfig):
2019-03-22 14:45:43 +08:00
if pytestconfig.getoption("verbose") > 0:
2018-03-22 04:46:07 +08:00
...
2019-05-09 05:50:08 +08:00
2021-12-07 17:13:36 +08:00
record_property -- .../_pytest/junitxml.py:282
2020-07-29 04:01:27 +08:00
Add extra properties to the calling test.
2018-03-22 04:46:07 +08:00
User properties become part of the test report and are available to the
configured reporters, like JUnit XML.
2020-07-29 04:01:27 +08:00
The fixture is callable with `` name, value `` . The value is automatically
XML-encoded.
2018-07-04 08:58:18 +08:00
2018-03-22 04:46:07 +08:00
Example::
2018-07-04 08:58:18 +08:00
2018-03-22 04:46:07 +08:00
def test_function(record_property):
record_property("example_key", 1)
2019-05-09 05:50:08 +08:00
2021-12-07 17:13:36 +08:00
record_xml_attribute -- .../_pytest/junitxml.py:305
2018-03-22 04:46:07 +08:00
Add extra xml attributes to the tag for the calling test.
2020-07-29 04:01:27 +08:00
The fixture is callable with `` name, value `` . The value is
automatically XML-encoded.
2019-05-09 05:50:08 +08:00
2021-12-07 17:13:36 +08:00
record_testsuite_property [session scope] -- .../_pytest/junitxml.py:343
2020-09-27 02:09:34 +08:00
Record a new `` <property> `` tag as child of the root `` <testsuite> `` .
This is suitable to writing global information regarding the entire test
suite, and is compatible with `` xunit2 `` JUnit family.
2019-05-12 00:35:32 +08:00
This is a `` session `` -scoped fixture which is called with `` (name, value) `` . Example:
.. code-block :: python
def test_foo(record_testsuite_property):
record_testsuite_property("ARCH", "PPC")
record_testsuite_property("STORAGE_TYPE", "CEPH")
`` name `` must be a string, `` value `` will be converted to a string and properly xml-escaped.
2020-09-27 02:09:34 +08:00
.. warning ::
Currently this fixture **does not work** with the
2021-12-07 17:13:36 +08:00
`pytest-xdist <https://github.com/pytest-dev/pytest-xdist> `__ plugin. See
:issue: `7767` for details.
2020-09-27 02:09:34 +08:00
2021-12-07 17:13:36 +08:00
tmpdir_factory [session scope] -- .../_pytest/legacypath.py:292
Return a :class: `pytest.TempdirFactory` instance for the test session.
tmpdir -- .../_pytest/legacypath.py:299
Return a temporary directory path object which is unique to each test
function invocation, created as a sub directory of the base temporary
directory.
By default, a new base temporary directory is created each test session,
and old bases are removed after 3 sessions, to aid in debugging. If
`` --basetemp `` is used then it is cleared each session. See :ref:`base
temporary directory`.
The returned object is a `legacy_path`_ object.
.. _legacy_path: https://py.readthedocs.io/en/latest/path.html
caplog -- .../_pytest/logging.py:483
2018-03-22 04:46:07 +08:00
Access and control log capturing.
2018-07-04 08:58:18 +08:00
2018-10-27 21:07:54 +08:00
Captured logs are available through the following properties/methods::
2018-07-04 08:58:18 +08:00
2019-10-25 07:24:04 +08:00
* caplog.messages -> list of format-interpolated log messages
2018-04-18 04:17:29 +08:00
* caplog.text -> string containing formatted log output
* caplog.records -> list of logging.LogRecord instances
* caplog.record_tuples -> list of (logger_name, level, message) tuples
2018-03-22 04:46:07 +08:00
* caplog.clear() -> clear captured records and formatted log output string
2019-05-09 05:50:08 +08:00
2021-12-07 17:13:36 +08:00
monkeypatch -- .../_pytest/monkeypatch.py:29
2020-09-27 02:09:34 +08:00
A convenient fixture for monkey-patching.
The fixture provides these methods to modify objects, dictionaries or
os.environ::
2018-07-04 08:58:18 +08:00
2018-03-22 04:46:07 +08:00
monkeypatch.setattr(obj, name, value, raising=True)
monkeypatch.delattr(obj, name, raising=True)
monkeypatch.setitem(mapping, name, value)
monkeypatch.delitem(obj, name, raising=True)
2021-07-09 01:43:10 +08:00
monkeypatch.setenv(name, value, prepend=None)
2018-07-04 08:51:21 +08:00
monkeypatch.delenv(name, raising=True)
2018-03-22 04:46:07 +08:00
monkeypatch.syspath_prepend(path)
monkeypatch.chdir(path)
2018-07-04 08:58:18 +08:00
2020-09-27 02:09:34 +08:00
All modifications will be undone after the requesting test function or
fixture has finished. The `` raising `` parameter determines if a KeyError
or AttributeError will be raised if the set/deletion operation has no target.
2019-05-09 05:50:08 +08:00
2021-12-07 17:13:36 +08:00
recwarn -- .../_pytest/recwarn.py:29
2018-03-22 04:46:07 +08:00
Return a :class: `WarningsRecorder` instance that records all warnings emitted by test functions.
2018-07-04 08:58:18 +08:00
2021-07-06 15:09:04 +08:00
See https://docs.python.org/library/how-to/capture-warnings.html for information
2018-03-22 04:46:07 +08:00
on warning categories.
2019-05-09 05:50:08 +08:00
2021-12-07 17:13:36 +08:00
tmp_path_factory [session scope] -- .../_pytest/tmpdir.py:183
2021-03-14 03:22:54 +08:00
Return a :class: `pytest.TempPathFactory` instance for the test session.
2019-05-09 05:50:08 +08:00
2021-12-07 17:13:36 +08:00
tmp_path -- .../_pytest/tmpdir.py:198
2020-09-27 02:09:34 +08:00
Return a temporary directory path object which is unique to each test
function invocation, created as a sub directory of the base temporary
directory.
2020-12-13 05:21:28 +08:00
By default, a new base temporary directory is created each test session,
and old bases are removed after 3 sessions, to aid in debugging. If
`` --basetemp `` is used then it is cleared each session. See :ref:`base
temporary directory`.
2020-09-27 02:09:34 +08:00
The returned object is a :class: `pathlib.Path` object.
2018-10-16 04:23:30 +08:00
2019-05-09 05:50:08 +08:00
2021-10-04 14:56:26 +08:00
========================== no tests ran in 0.12s ===========================
2011-10-21 21:45:56 +08:00
2019-08-07 07:20:06 +08:00
You can also interactively ask for help, e.g. by typing on the Python interactive prompt something like:
2010-11-06 06:37:31 +08:00
2019-08-07 04:25:54 +08:00
.. code-block :: python
2018-02-27 07:27:15 +08:00
import pytest
2019-08-07 04:34:58 +08:00
2018-02-27 07:27:15 +08:00
help(pytest)