Add syntax highlighting to missing snippets in the documentation and other fixes
- Add explicit "code-block" for sessions without syntax highlight - Moved Metafunc documentation to the class docstring and reused that in the docs;
This commit is contained in:
		
							parent
							
								
									0624a69964
								
							
						
					
					
						commit
						0ee3ee7333
					
				| 
						 | 
					@ -787,6 +787,27 @@ class FuncargnamesCompatAttr:
 | 
				
			||||||
        return self.fixturenames
 | 
					        return self.fixturenames
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class Metafunc(FuncargnamesCompatAttr):
 | 
					class Metafunc(FuncargnamesCompatAttr):
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					    Metafunc objects are passed to the ``pytest_generate_tests`` hook.
 | 
				
			||||||
 | 
					    They help to inspect a test function and to generate tests according to
 | 
				
			||||||
 | 
					    test configuration or values specified in the class or module where a
 | 
				
			||||||
 | 
					    test function is defined.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    :ivar fixturenames: set of fixture names required by the test function
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    :ivar function: underlying python test function
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    :ivar cls: class object where the test function is defined in or ``None``.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    :ivar module: the module object where the test function is defined in.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    :ivar config: access to the :class:`_pytest.config.Config` object for the
 | 
				
			||||||
 | 
					        test session.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    :ivar funcargnames:
 | 
				
			||||||
 | 
					        .. deprecated:: 2.3
 | 
				
			||||||
 | 
					            Use ``fixturenames`` instead.
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
    def __init__(self, function, fixtureinfo, config, cls=None, module=None):
 | 
					    def __init__(self, function, fixtureinfo, config, cls=None, module=None):
 | 
				
			||||||
        self.config = config
 | 
					        self.config = config
 | 
				
			||||||
        self.module = module
 | 
					        self.module = module
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -5,6 +5,7 @@ Release announcements
 | 
				
			||||||
.. toctree::
 | 
					.. toctree::
 | 
				
			||||||
   :maxdepth: 2
 | 
					   :maxdepth: 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   release-2.7.2
 | 
				
			||||||
   release-2.7.1
 | 
					   release-2.7.1
 | 
				
			||||||
   release-2.7.0
 | 
					   release-2.7.0
 | 
				
			||||||
   release-2.6.3
 | 
					   release-2.6.3
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -87,7 +87,9 @@ Accessing captured output from a test function
 | 
				
			||||||
 | 
					
 | 
				
			||||||
The ``capsys`` and ``capfd`` fixtures allow to access stdout/stderr
 | 
					The ``capsys`` and ``capfd`` fixtures allow to access stdout/stderr
 | 
				
			||||||
output created during test execution.  Here is an example test function
 | 
					output created during test execution.  Here is an example test function
 | 
				
			||||||
that performs some output related checks::
 | 
					that performs some output related checks:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.. code-block:: python
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def test_myoutput(capsys): # or use "capfd" for fd-level
 | 
					    def test_myoutput(capsys): # or use "capfd" for fd-level
 | 
				
			||||||
        print ("hello")
 | 
					        print ("hello")
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -89,7 +89,9 @@ How to change command line options defaults
 | 
				
			||||||
It can be tedious to type the same series of command line options
 | 
					It can be tedious to type the same series of command line options
 | 
				
			||||||
every time you use ``pytest``.  For example, if you always want to see
 | 
					every time you use ``pytest``.  For example, if you always want to see
 | 
				
			||||||
detailed info on skipped and xfailed tests, as well as have terser "dot"
 | 
					detailed info on skipped and xfailed tests, as well as have terser "dot"
 | 
				
			||||||
progress output, you can write it into a configuration file::
 | 
					progress output, you can write it into a configuration file:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.. code-block:: ini
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # content of pytest.ini
 | 
					    # content of pytest.ini
 | 
				
			||||||
    # (or tox.ini or setup.cfg)
 | 
					    # (or tox.ini or setup.cfg)
 | 
				
			||||||
| 
						 | 
					@ -117,14 +119,16 @@ Builtin configuration file options
 | 
				
			||||||
.. confval:: addopts
 | 
					.. confval:: addopts
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   Add the specified ``OPTS`` to the set of command line arguments as if they
 | 
					   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::
 | 
					   had been specified by the user. Example: if you have this ini file content:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
       [pytest]
 | 
					   .. code-block:: ini
 | 
				
			||||||
       addopts = --maxfail=2 -rf  # exit after 2 failures, report fail info
 | 
					
 | 
				
			||||||
 | 
					        [pytest]
 | 
				
			||||||
 | 
					        addopts = --maxfail=2 -rf  # exit after 2 failures, report fail info
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   issuing ``py.test test_hello.py`` actually means::
 | 
					   issuing ``py.test test_hello.py`` actually means::
 | 
				
			||||||
 | 
					
 | 
				
			||||||
       py.test --maxfail=2 -rf test_hello.py
 | 
					        py.test --maxfail=2 -rf test_hello.py
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   Default is to add no options.
 | 
					   Default is to add no options.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -142,11 +146,13 @@ Builtin configuration file options
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   Default patterns are ``'.*', 'CVS', '_darcs', '{arch}', '*.egg'``.
 | 
					   Default patterns are ``'.*', 'CVS', '_darcs', '{arch}', '*.egg'``.
 | 
				
			||||||
   Setting a ``norecursedirs`` replaces the default.  Here is an example of
 | 
					   Setting a ``norecursedirs`` replaces the default.  Here is an example of
 | 
				
			||||||
   how to avoid certain directories::
 | 
					   how to avoid certain directories:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # content of setup.cfg
 | 
					   .. code-block:: ini
 | 
				
			||||||
    [pytest]
 | 
					
 | 
				
			||||||
    norecursedirs = .svn _build tmp*
 | 
					        # content of setup.cfg
 | 
				
			||||||
 | 
					        [pytest]
 | 
				
			||||||
 | 
					        norecursedirs = .svn _build tmp*
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   This would tell ``pytest`` to not look into typical subversion or
 | 
					   This would tell ``pytest`` to not look into typical subversion or
 | 
				
			||||||
   sphinx-build directories or into any ``tmp`` prefixed directory.
 | 
					   sphinx-build directories or into any ``tmp`` prefixed directory.
 | 
				
			||||||
| 
						 | 
					@ -160,11 +166,13 @@ Builtin configuration file options
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   One or more name prefixes or glob-style patterns determining which classes
 | 
					   One or more name prefixes or glob-style patterns determining which classes
 | 
				
			||||||
   are considered for test collection. Here is an example of how to collect
 | 
					   are considered for test collection. Here is an example of how to collect
 | 
				
			||||||
   tests from classes that end in ``Suite``::
 | 
					   tests from classes that end in ``Suite``:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # content of pytest.ini
 | 
					   .. code-block:: ini
 | 
				
			||||||
    [pytest]
 | 
					
 | 
				
			||||||
    python_classes = *Suite
 | 
					        # content of pytest.ini
 | 
				
			||||||
 | 
					        [pytest]
 | 
				
			||||||
 | 
					        python_classes = *Suite
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   Note that ``unittest.TestCase`` derived classes are always collected
 | 
					   Note that ``unittest.TestCase`` derived classes are always collected
 | 
				
			||||||
   regardless of this option, as ``unittest``'s own collection framework is used
 | 
					   regardless of this option, as ``unittest``'s own collection framework is used
 | 
				
			||||||
| 
						 | 
					@ -174,11 +182,13 @@ Builtin configuration file options
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   One or more name prefixes or glob-patterns determining which test functions
 | 
					   One or more name prefixes or glob-patterns determining which test functions
 | 
				
			||||||
   and methods are considered tests. Here is an example of how
 | 
					   and methods are considered tests. Here is an example of how
 | 
				
			||||||
   to collect test functions and methods that end in ``_test``::
 | 
					   to collect test functions and methods that end in ``_test``:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # content of pytest.ini
 | 
					   .. code-block:: ini
 | 
				
			||||||
    [pytest]
 | 
					
 | 
				
			||||||
    python_functions = *_test
 | 
					        # content of pytest.ini
 | 
				
			||||||
 | 
					        [pytest]
 | 
				
			||||||
 | 
					        python_functions = *_test
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   Note that this has no effect on methods that live on a ``unittest
 | 
					   Note that this has no effect on methods that live on a ``unittest
 | 
				
			||||||
   .TestCase`` derived class, as ``unittest``'s own collection framework is used
 | 
					   .TestCase`` derived class, as ``unittest``'s own collection framework is used
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -15,7 +15,9 @@ python test modules)::
 | 
				
			||||||
    py.test --doctest-modules
 | 
					    py.test --doctest-modules
 | 
				
			||||||
 | 
					
 | 
				
			||||||
You can make these changes permanent in your project by
 | 
					You can make these changes permanent in your project by
 | 
				
			||||||
putting them into a pytest.ini file like this::
 | 
					putting them into a pytest.ini file like this:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.. code-block:: ini
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # content of pytest.ini
 | 
					    # content of pytest.ini
 | 
				
			||||||
    [pytest]
 | 
					    [pytest]
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -232,7 +232,9 @@ traceback.  As a result, the two test functions using ``smtp`` run as
 | 
				
			||||||
quick as a single one because they reuse the same instance.
 | 
					quick as a single one because they reuse the same instance.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
If you decide that you rather want to have a session-scoped ``smtp``
 | 
					If you decide that you rather want to have a session-scoped ``smtp``
 | 
				
			||||||
instance, you can simply declare it::
 | 
					instance, you can simply declare it:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.. code-block:: python
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @pytest.fixture(scope="session")
 | 
					    @pytest.fixture(scope="session")
 | 
				
			||||||
    def smtp(...):
 | 
					    def smtp(...):
 | 
				
			||||||
| 
						 | 
					@ -669,20 +671,25 @@ to verify our fixture is activated and the tests pass::
 | 
				
			||||||
    ..
 | 
					    ..
 | 
				
			||||||
    2 passed in 0.12 seconds
 | 
					    2 passed in 0.12 seconds
 | 
				
			||||||
 | 
					
 | 
				
			||||||
You can specify multiple fixtures like this::
 | 
					You can specify multiple fixtures like this:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.. code-block:: python
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @pytest.mark.usefixtures("cleandir", "anotherfixture")
 | 
					    @pytest.mark.usefixtures("cleandir", "anotherfixture")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
and you may specify fixture usage at the test module level, using
 | 
					and you may specify fixture usage at the test module level, using
 | 
				
			||||||
a generic feature of the mark mechanism::
 | 
					a generic feature of the mark mechanism:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.. code-block:: python
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    pytestmark = pytest.mark.usefixtures("cleandir")
 | 
					    pytestmark = pytest.mark.usefixtures("cleandir")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Lastly you can put fixtures required by all tests in your project
 | 
					Lastly you can put fixtures required by all tests in your project
 | 
				
			||||||
into an ini-file::
 | 
					into an ini-file:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.. code-block:: ini
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # content of pytest.ini
 | 
					    # content of pytest.ini
 | 
				
			||||||
 | 
					 | 
				
			||||||
    [pytest]
 | 
					    [pytest]
 | 
				
			||||||
    usefixtures = cleandir
 | 
					    usefixtures = cleandir
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -205,7 +205,7 @@ fixtures:
 | 
				
			||||||
  ``request.cached_setup()`` calls and allowed using other funcargs via 
 | 
					  ``request.cached_setup()`` calls and allowed using other funcargs via 
 | 
				
			||||||
  ``request.getfuncargvalue()`` calls.  These intricate APIs made it hard 
 | 
					  ``request.getfuncargvalue()`` calls.  These intricate APIs made it hard 
 | 
				
			||||||
  to do proper parametrization and implement resource caching. The
 | 
					  to do proper parametrization and implement resource caching. The
 | 
				
			||||||
  new :py:func:`pytest.fixture`` decorator allows to declare the scope
 | 
					  new :py:func:`pytest.fixture` decorator allows to declare the scope
 | 
				
			||||||
  and let pytest figure things out for you.
 | 
					  and let pytest figure things out for you.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
* if you used parametrization and funcarg factories which made use of
 | 
					* if you used parametrization and funcarg factories which made use of
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -44,7 +44,6 @@ If you want to prevent the "requests" library from performing http
 | 
				
			||||||
requests in all your tests, you can do::
 | 
					requests in all your tests, you can do::
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # content of conftest.py
 | 
					    # content of conftest.py
 | 
				
			||||||
 | 
					 | 
				
			||||||
    import pytest
 | 
					    import pytest
 | 
				
			||||||
    @pytest.fixture(autouse=True)
 | 
					    @pytest.fixture(autouse=True)
 | 
				
			||||||
    def no_requests(monkeypatch):
 | 
					    def no_requests(monkeypatch):
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -30,7 +30,9 @@ pytest supports test parametrization in several well-integrated ways:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.. regendoc: wipe
 | 
					.. regendoc: wipe
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.. versionadded:: 2.2, improved in 2.4
 | 
					.. versionadded:: 2.2
 | 
				
			||||||
 | 
					.. versionchanged:: 2.4
 | 
				
			||||||
 | 
					    Several improvements.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
The builtin ``pytest.mark.parametrize`` decorator enables
 | 
					The builtin ``pytest.mark.parametrize`` decorator enables
 | 
				
			||||||
parametrization of arguments for a test function.  Here is a typical example
 | 
					parametrization of arguments for a test function.  Here is a typical example
 | 
				
			||||||
| 
						 | 
					@ -199,25 +201,7 @@ The **metafunc** object
 | 
				
			||||||
-------------------------------------------
 | 
					-------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.. currentmodule:: _pytest.python
 | 
					.. currentmodule:: _pytest.python
 | 
				
			||||||
 | 
					.. autoclass:: Metafunc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
metafunc objects are passed to the ``pytest_generate_tests`` hook.
 | 
					    .. automethod:: Metafunc.parametrize
 | 
				
			||||||
They help to inspect a testfunction and to generate tests
 | 
					    .. automethod:: Metafunc.addcall(funcargs=None,id=_notexists,param=_notexists)
 | 
				
			||||||
according to test configuration or values specified
 | 
					 | 
				
			||||||
in the class or module where a test function is defined:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
``metafunc.fixturenames``: set of required function arguments for given function
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
``metafunc.function``: underlying python test function
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
``metafunc.cls``: class object where the test function is defined in or None.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
``metafunc.module``: the module object where the test function is defined in.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
``metafunc.config``: access to command line opts and general config
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
``metafunc.funcargnames``: alias for ``fixturenames``, for pre-2.3 compatibility
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
.. automethod:: Metafunc.parametrize
 | 
					 | 
				
			||||||
.. automethod:: Metafunc.addcall(funcargs=None,id=_notexists,param=_notexists)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -81,4 +81,5 @@ Some organisations using pytest
 | 
				
			||||||
* `Open End, Gothenborg <http://www.openend.se>`_
 | 
					* `Open End, Gothenborg <http://www.openend.se>`_
 | 
				
			||||||
* `Laboratory of Bioinformatics, Warsaw <http://genesilico.pl/>`_
 | 
					* `Laboratory of Bioinformatics, Warsaw <http://genesilico.pl/>`_
 | 
				
			||||||
* `merlinux, Germany <http://merlinux.eu>`_
 | 
					* `merlinux, Germany <http://merlinux.eu>`_
 | 
				
			||||||
 | 
					* `ESSS, Brazil <http://www.esss.com.br>`_
 | 
				
			||||||
* many more ... (please be so kind to send a note via :ref:`contact`)
 | 
					* many more ... (please be so kind to send a note via :ref:`contact`)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -23,8 +23,13 @@ self-contained test::
 | 
				
			||||||
 | 
					
 | 
				
			||||||
The ``recwarn`` function argument provides these methods:
 | 
					The ``recwarn`` function argument provides these methods:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
* ``pop(category=None)``: return last warning matching the category.
 | 
					.. method:: pop(category=None)
 | 
				
			||||||
* ``clear()``: clear list of warnings
 | 
					
 | 
				
			||||||
 | 
					    Return last warning matching the category.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.. method:: clear()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    Clear list of warnings
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.. _ensuring_function_triggers:
 | 
					.. _ensuring_function_triggers:
 | 
				
			||||||
| 
						 | 
					@ -33,8 +38,7 @@ Ensuring a function triggers a deprecation warning
 | 
				
			||||||
-------------------------------------------------------
 | 
					-------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
You can also call a global helper for checking
 | 
					You can also call a global helper for checking
 | 
				
			||||||
that a certain function call triggers a Deprecation
 | 
					that a certain function call triggers a ``DeprecationWarning``::
 | 
				
			||||||
warning::
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    import pytest
 | 
					    import pytest
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -11,7 +11,7 @@ For doing a release of pytest (status April 2015) this rough checklist is used:
 | 
				
			||||||
3. write ``doc/en/announce/release-VERSION.txt``
 | 
					3. write ``doc/en/announce/release-VERSION.txt``
 | 
				
			||||||
   (usually copying from an earlier release version).
 | 
					   (usually copying from an earlier release version).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
4. regenerate doc examples with ``tox -e regen`` and check with ``hg diff``
 | 
					4. regenerate doc examples with ``tox -e regen`` and check with ``git diff``
 | 
				
			||||||
   if the differences show regressions.  It's a bit of a manual process because
 | 
					   if the differences show regressions.  It's a bit of a manual process because
 | 
				
			||||||
   there a large part of the diff is about pytest headers or differences in
 | 
					   there a large part of the diff is about pytest headers or differences in
 | 
				
			||||||
   speed ("tests took X.Y seconds"). (XXX automate doc/example diffing to ignore
 | 
					   speed ("tests took X.Y seconds"). (XXX automate doc/example diffing to ignore
 | 
				
			||||||
| 
						 | 
					@ -40,9 +40,9 @@ For doing a release of pytest (status April 2015) this rough checklist is used:
 | 
				
			||||||
                               # browse to pytest.org to see
 | 
					                               # browse to pytest.org to see
 | 
				
			||||||
 | 
					
 | 
				
			||||||
     devpi push pytest-VERSION pypi:NAME
 | 
					     devpi push pytest-VERSION pypi:NAME
 | 
				
			||||||
     hg ci -m "... finalized pytest-VERSION"
 | 
					     git commit -a -m "... finalized pytest-VERSION"
 | 
				
			||||||
     hg tag VERSION
 | 
					     git tag VERSION
 | 
				
			||||||
     hg push
 | 
					     git push
 | 
				
			||||||
 | 
					
 | 
				
			||||||
9. send out release announcement to pytest-dev@python.org,
 | 
					9. send out release announcement to pytest-dev@python.org,
 | 
				
			||||||
    testing-in-python@lists.idyll.org and python-announce-list@python.org .
 | 
					    testing-in-python@lists.idyll.org and python-announce-list@python.org .
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -107,10 +107,11 @@ As with the class-decorator, the ``pytestmark`` special name tells
 | 
				
			||||||
``pytest`` to apply it to each test function in the class.
 | 
					``pytest`` to apply it to each test function in the class.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
If you want to skip all test functions of a module, you must use
 | 
					If you want to skip all test functions of a module, you must use
 | 
				
			||||||
the ``pytestmark`` name on the global level::
 | 
					the ``pytestmark`` name on the global level:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.. code-block:: python
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # test_module.py
 | 
					    # test_module.py
 | 
				
			||||||
 | 
					 | 
				
			||||||
    pytestmark = pytest.mark.skipif(...)
 | 
					    pytestmark = pytest.mark.skipif(...)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
If multiple "skipif" decorators are applied to a test function, it
 | 
					If multiple "skipif" decorators are applied to a test function, it
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
pytest development status
 | 
					pytest development status
 | 
				
			||||||
================================
 | 
					================================
 | 
				
			||||||
 | 
					
 | 
				
			||||||
https://drone.io/bitbucket.org/pytest-dev/pytest
 | 
					https://travis-ci.org/pytest-dev/pytest
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -93,10 +93,10 @@ interactive use, this allows one to drop into postmortem debugging with
 | 
				
			||||||
any debug tool. One can also manually access the exception information,
 | 
					any debug tool. One can also manually access the exception information,
 | 
				
			||||||
for example::
 | 
					for example::
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    >> import sys
 | 
					    >>> import sys
 | 
				
			||||||
    >> sys.last_traceback.tb_lineno
 | 
					    >>> sys.last_traceback.tb_lineno
 | 
				
			||||||
    42
 | 
					    42
 | 
				
			||||||
    >> sys.last_value
 | 
					    >>> sys.last_value
 | 
				
			||||||
    AssertionError('assert result == "ok"',)
 | 
					    AssertionError('assert result == "ok"',)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Setting a breakpoint / aka ``set_trace()``
 | 
					Setting a breakpoint / aka ``set_trace()``
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -239,7 +239,9 @@ When we implement a ``pytest_collection_modifyitems`` function in our plugin
 | 
				
			||||||
pytest will during registration verify that you use argument
 | 
					pytest will during registration verify that you use argument
 | 
				
			||||||
names which match the specification and bail out if not.
 | 
					names which match the specification and bail out if not.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Let's look at a possible implementation::
 | 
					Let's look at a possible implementation:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.. code-block:: python
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def pytest_collection_modifyitems(config, items):
 | 
					    def pytest_collection_modifyitems(config, items):
 | 
				
			||||||
        # called after collectin is completed
 | 
					        # called after collectin is completed
 | 
				
			||||||
| 
						 | 
					@ -315,7 +317,9 @@ For any given hook specification there may be more than one
 | 
				
			||||||
implementation and we thus generally view ``hook`` execution as a
 | 
					implementation and we thus generally view ``hook`` execution as a
 | 
				
			||||||
``1:N`` function call where ``N`` is the number of registered functions.
 | 
					``1:N`` function call where ``N`` is the number of registered functions.
 | 
				
			||||||
There are ways to influence if a hook implementation comes before or
 | 
					There are ways to influence if a hook implementation comes before or
 | 
				
			||||||
after others, i.e.  the position in the ``N``-sized list of functions::
 | 
					after others, i.e.  the position in the ``N``-sized list of functions:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.. code-block:: python
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # Plugin 1
 | 
					    # Plugin 1
 | 
				
			||||||
    @pytest.hookimpl_spec(tryfirst=True)
 | 
					    @pytest.hookimpl_spec(tryfirst=True)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue