Add minimal docs for package-scoped fixtures (experimental)
This commit is contained in:
parent
3c19370cec
commit
027d2336b8
|
@ -1 +1 @@
|
||||||
Pytest now supports package-level fixtures.
|
New ``package`` fixture scope: fixtures are finalized when the last test of a *package* finishes. This feature is considered **experimental**, so use it sparingly.
|
||||||
|
|
|
@ -258,6 +258,22 @@ instance, you can simply declare it:
|
||||||
Finally, the ``class`` scope will invoke the fixture once per test *class*.
|
Finally, the ``class`` scope will invoke the fixture once per test *class*.
|
||||||
|
|
||||||
|
|
||||||
|
``package`` scope (experimental)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
.. versionadded:: 3.7
|
||||||
|
|
||||||
|
In pytest 3.7 the ``package`` scope has been introduced. Package-scoped fixtures
|
||||||
|
are finalized when the last test of a *package* finishes.
|
||||||
|
|
||||||
|
.. warning::
|
||||||
|
This functionality is considered **experimental** and may be removed in future
|
||||||
|
versions if hidden corner-cases or serious problems with this functionality
|
||||||
|
are discovered after it gets more usage in the wild.
|
||||||
|
|
||||||
|
Use this new feature sparingly and please make sure to report any issues you find.
|
||||||
|
|
||||||
|
|
||||||
Higher-scoped fixtures are instantiated first
|
Higher-scoped fixtures are instantiated first
|
||||||
---------------------------------------------
|
---------------------------------------------
|
||||||
|
|
||||||
|
|
|
@ -960,16 +960,27 @@ class FixtureFunctionMarker(object):
|
||||||
def fixture(scope="function", params=None, autouse=False, ids=None, name=None):
|
def fixture(scope="function", params=None, autouse=False, ids=None, name=None):
|
||||||
"""Decorator to mark a fixture factory function.
|
"""Decorator to mark a fixture factory function.
|
||||||
|
|
||||||
This decorator can be used (with or without parameters) to define a
|
This decorator can be used, with or without parameters, to define a
|
||||||
fixture function. The name of the fixture function can later be
|
fixture function.
|
||||||
referenced to cause its invocation ahead of running tests: test
|
|
||||||
modules or classes can use the pytest.mark.usefixtures(fixturename)
|
The name of the fixture function can later be referenced to cause its
|
||||||
marker. Test functions can directly use fixture names as input
|
invocation ahead of running tests: test
|
||||||
|
modules or classes can use the ``pytest.mark.usefixtures(fixturename)``
|
||||||
|
marker.
|
||||||
|
|
||||||
|
Test functions can directly use fixture names as input
|
||||||
arguments in which case the fixture instance returned from the fixture
|
arguments in which case the fixture instance returned from the fixture
|
||||||
function will be injected.
|
function will be injected.
|
||||||
|
|
||||||
|
Fixtures can provide their values to test functions using ``return`` or ``yield``
|
||||||
|
statements. When using ``yield`` the code block after the ``yield`` statement is executed
|
||||||
|
as teardown code regardless of the test outcome, and must yield exactly once.
|
||||||
|
|
||||||
:arg scope: the scope for which this fixture is shared, one of
|
:arg scope: the scope for which this fixture is shared, one of
|
||||||
"function" (default), "class", "module" or "session".
|
``"function"`` (default), ``"class"``, ``"module"``,
|
||||||
|
``"package"`` or ``"session"``.
|
||||||
|
|
||||||
|
``"package"`` is considered **experimental** at this time.
|
||||||
|
|
||||||
:arg params: an optional list of parameters which will cause multiple
|
:arg params: an optional list of parameters which will cause multiple
|
||||||
invocations of the fixture function and all of the tests
|
invocations of the fixture function and all of the tests
|
||||||
|
@ -990,10 +1001,6 @@ def fixture(scope="function", params=None, autouse=False, ids=None, name=None):
|
||||||
to resolve this is to name the decorated function
|
to resolve this is to name the decorated function
|
||||||
``fixture_<fixturename>`` and then use
|
``fixture_<fixturename>`` and then use
|
||||||
``@pytest.fixture(name='<fixturename>')``.
|
``@pytest.fixture(name='<fixturename>')``.
|
||||||
|
|
||||||
Fixtures can optionally provide their values to test functions using a ``yield`` statement,
|
|
||||||
instead of ``return``. In this case, the code block after the ``yield`` statement is executed
|
|
||||||
as teardown code regardless of the test outcome. A fixture function must yield exactly once.
|
|
||||||
"""
|
"""
|
||||||
if callable(scope) and params is None and autouse is False:
|
if callable(scope) and params is None and autouse is False:
|
||||||
# direct decoration
|
# direct decoration
|
||||||
|
|
Loading…
Reference in New Issue