Merge pull request #2848 from bilderbuchi/fix-538
Clarify the documentation of fixture scopes
This commit is contained in:
commit
8c7974af01
|
@ -0,0 +1 @@
|
||||||
|
Clarify the documentation of available fixture scopes.
|
|
@ -27,7 +27,7 @@ functions:
|
||||||
* fixture management scales from simple unit to complex
|
* fixture management scales from simple unit to complex
|
||||||
functional testing, allowing to parametrize fixtures and tests according
|
functional testing, allowing to parametrize fixtures and tests according
|
||||||
to configuration and component options, or to re-use fixtures
|
to configuration and component options, or to re-use fixtures
|
||||||
across class, module or whole test session scopes.
|
across function, class, module or whole test session scopes.
|
||||||
|
|
||||||
In addition, pytest continues to support :ref:`xunitsetup`. You can mix
|
In addition, pytest continues to support :ref:`xunitsetup`. You can mix
|
||||||
both styles, moving incrementally from classic to new style, as you
|
both styles, moving incrementally from classic to new style, as you
|
||||||
|
@ -129,8 +129,8 @@ functions take the role of the *injector* and test functions are the
|
||||||
|
|
||||||
.. _smtpshared:
|
.. _smtpshared:
|
||||||
|
|
||||||
Sharing a fixture across tests in a module (or class/session)
|
Scope: Sharing a fixture across tests in a class, module or session
|
||||||
-----------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
|
|
||||||
.. regendoc:wipe
|
.. regendoc:wipe
|
||||||
|
|
||||||
|
@ -139,10 +139,12 @@ usually time-expensive to create. Extending the previous example, we
|
||||||
can add a ``scope='module'`` parameter to the
|
can add a ``scope='module'`` parameter to the
|
||||||
:py:func:`@pytest.fixture <_pytest.python.fixture>` invocation
|
:py:func:`@pytest.fixture <_pytest.python.fixture>` invocation
|
||||||
to cause the decorated ``smtp`` fixture function to only be invoked once
|
to cause the decorated ``smtp`` fixture function to only be invoked once
|
||||||
per test module. Multiple test functions in a test module will thus
|
per test *module* (the default is to invoke once per test *function*).
|
||||||
each receive the same ``smtp`` fixture instance. The next example puts
|
Multiple test functions in a test module will thus
|
||||||
the fixture function into a separate ``conftest.py`` file so
|
each receive the same ``smtp`` fixture instance, thus saving time.
|
||||||
that tests from multiple test modules in the directory can
|
|
||||||
|
The next example puts the fixture function into a separate ``conftest.py`` file
|
||||||
|
so that tests from multiple test modules in the directory can
|
||||||
access the fixture function::
|
access the fixture function::
|
||||||
|
|
||||||
# content of conftest.py
|
# content of conftest.py
|
||||||
|
@ -223,6 +225,8 @@ instance, you can simply declare it:
|
||||||
# the returned fixture value will be shared for
|
# the returned fixture value will be shared for
|
||||||
# all tests needing it
|
# all tests needing it
|
||||||
|
|
||||||
|
Finally, the ``class`` scope will invoke the fixture once per test *class*.
|
||||||
|
|
||||||
.. _`finalization`:
|
.. _`finalization`:
|
||||||
|
|
||||||
Fixture finalization / executing teardown code
|
Fixture finalization / executing teardown code
|
||||||
|
|
Loading…
Reference in New Issue